Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
demasiados argumentos para a invocação de macro que se comporta como uma função 'identificador'
Observações
O número de parâmetros reais na macro excede o número de parâmetros formais na definição de macro. O pré-processador coleta os parâmetros extras, mas os ignora durante a expansão macro.
C4002 pode ocorrer ao usar incorretamente macros variádicas.
Example
O exemplo a seguir gera C4002:
// C4002.cpp
// compile with: /W1
#define test(a) (a)
int main() {
int a = 1;
int b = 2;
a = test(a,b); // C4002
// try..
a = test(a);
}
Este erro também pode ser gerado como resultado do trabalho de conformidade do compilador que foi feito para o Visual Studio .NET 2003: vírgulas extras na macro não são mais aceitas.
O compilador não aceita mais vírgulas extras em uma macro. Para que o código seja válido nas versões Visual Studio .NET 2003 e Visual Studio .NET do Visual C++, remova as vírgulas extras.
// C4002b.cpp
// compile with: /W1
#define F(x,y)
int main()
{
F(2,,,,,,3,,,,,,) // C4002
// Try the following line instead:
// F(2,3)
}