Compartilhar via


Aviso do Compilador (nível 1, erro) C4002

Muitos argumentos para a invocação de macro semelhante a função 'identificador'.

O número de parâmetros formais na macro excede o número de parâmetros formais na macro. O pré-processador coleta os parâmetros extra, mas os ignora durante a expansão da macro.

O C4002 pode ocorrer quando se usa incorretamente macros variádicas.

A amostra 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);
}

Esse erro também pode ser gerado como resultado do trabalho de conformidade do compilador que foi feito para o Visual Studio .NET 2003: as vírgulas extra não são mais aceitas na macro.

O compilador não aceita mais vírgulas extras em uma macro. Para que o código seja válido nas versões do Visual Studio .NET 2003 e do Visual Studio .NET do Visual C++, remova as vírgulas extra.

// C4002b.cpp
// compile with: /W1
#define F(x,y)
int main()
{
   F(2,,,,,,3,,,,,,)   // C4002
   // Try the following line instead:
   // F(2,3)
}