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)
}