Sdílet prostřednictvím


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