Compartir a través de


Advertencia del compilador (nivel 1) C4002

Actualización: noviembre 2007

Mensaje de error

hay demasiados parámetros reales para la macro 'identificador'
too many actual parameters for macro 'identifier'

El número de parámetros reales de la macro supera el número de parámetros formales de la definición de macro. El preprocesador obtiene los parámetros adicionales pero los omite durante la expansión de la macro.

La advertencia C4002 puede aparecer al utilizar incorrectamente Variadic Macros.

El ejemplo siguiente genera el error 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 error también puede producirse como resultado del trabajo de conformidad del compilador realizado para Visual Studio .NET 2003: ya no se admiten comas adicionales en las macros.

El compilador ya no aceptará comas adicionales en una macro. Para que el código sea válido en las versiones Visual Studio .NET 2003 y Visual Studio .NET de Visual C++, quite las comas adicionales.

Vea Resumen de cambios importantes en tiempo de compilación para obtener más información.

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