Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
zbyt wiele argumentów wywołania makra przypominającego funkcję "identyfikator"
Uwagi
Liczba rzeczywistych parametrów w makrze przekracza liczbę parametrów formalnych w definicji makra. Preprocesor zbiera dodatkowe parametry, ale ignoruje je podczas rozszerzania makr.
C4002 może wystąpić w przypadku niepoprawnego używania makr wariadycznych.
Example
Poniższy przykład generuje kod 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);
}
Ten błąd można również wygenerować w wyniku pracy kompilatora, która została wykonana dla programu Visual Studio .NET 2003: dodatkowe przecinki w makrze nie są już akceptowane.
Kompilator nie akceptuje już dodatkowych przecinków w makrze. Aby kod był prawidłowy zarówno w wersjach Visual Studio .NET 2003, jak i Visual Studio .NET visual C++, usuń dodatkowe przecinki.
// C4002b.cpp
// compile with: /W1
#define F(x,y)
int main()
{
F(2,,,,,,3,,,,,,) // C4002
// Try the following line instead:
// F(2,3)
}