Avviso del compilatore (livello 1) C4002

Aggiornamento: novembre 2007

Messaggio di errore

troppi parametri effettivi per la macro 'identificatore'
too many actual parameters for macro 'identifier'

Il numero di parametri effettivi nella macro supera il numero di parametri formali nella definizione della stessa. Il preprocessore raccoglie i parametri supplementari, ma li ignora durante l'espansione della macro.

L'errore C4002 può verificarsi quando si utilizza Variadic Macros in modo non corretto.

Nell'esempio seguente viene generato l'errore 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);
}

Questo errore può anche venire generato come risultato delle operazioni di conformità eseguite per Visual Studio .NET 2003: non sono più accettate virgole aggiuntive nella macro.

Il compilatore non accetta più virgole aggiuntive in una macro. Affinché il codice sia valido in entrambe le versioni Visual Studio .NET 2003 e Visual Studio .NET di Visual C++, rimuovere le virgole aggiuntive.

Per ulteriori informazioni, vedere Riepilogo delle ultime modifiche in fase di compilazione.

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