Freigeben über


Compilerwarnung (Stufe 1) C4002

Aktualisiert: November 2007

Fehlermeldung

Zu viele übergebene Parameter für das Makro 'Bezeichner'
too many actual parameters for macro 'identifier'

Die Anzahl der tatsächlich im Makro enthaltenen Parameter überschreitet die Anzahl der formalen Parameter in der Makrodefinition. Die zusätzlichen Parameter werden zwar vom Präprozessor aufgelistet, bei der Makroerweiterung jedoch ignoriert.

C4002 kann bei falscher Verwendung von Variadic Macros auftreten.

Im folgenden Beispiel wird C4002 generiert:

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

Dieser Fehler kann auch aufgrund einer Verbesserung der Compilerkonformität in Visual Studio .NET 2003 ausgegeben werden: Zusätzliche Kommas in Makros werden nicht mehr unterstützt.

Zusätzliche Kommas in Makros werden vom Compiler nicht mehr akzeptiert. In Code, der sowohl in der Visual Studio .NET 2003-Version als auch in der Visual Studio .NET-Version von Visual C++ gültig sein soll, entfernen Sie die zusätzlichen Kommas.

Weitere Informationen finden Sie unter Übersicht über die wichtigsten Änderungen bei der Kompilierzeit.

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