Upozornění kompilátoru (úroveň 1, chyba) C4002
Příliš mnoho argumentů pro vyvolání makra typu function-like 'identifier'
Počet skutečných parametrů makra překračuje počet formálních parametrů v definici makra. Preprocesor shromažďuje další parametry, ale ignoruje je během rozšíření makra.
C4002 může nastat při nesprávném použití variadických maker.
Následující ukázka generuje 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);
}
Tato chyba se dá vygenerovat také v důsledku práce v souladu kompilátoru, která byla provedena pro Visual Studio .NET 2003: nadbytečné čárky v makru se už nepřijímají.
Kompilátor už v makru nepřijímá nadbytečné čárky. Aby byl kód platný v sadě Visual Studio .NET 2003 i ve verzích Visual C++, odeberte nadbytečné čárky.
// C4002b.cpp
// compile with: /W1
#define F(x,y)
int main()
{
F(2,,,,,,3,,,,,,) // C4002
// Try the following line instead:
// F(2,3)
}