编译器警告(级别 1,错误)C4002
类函数宏的调用“identifier”参数过多
宏中的实参数量超过宏定义中的形参数量。 预处理器会收集额外参数,但会在宏扩展过程中忽略它们。
未正确使用 Variadic 宏时,可能会发生 C4002。
下面的示例生成 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);
}
此错误还可能来自于为 Visual Studio .NET 2003 执行的编译器一致性工作:不再接受宏中的额外逗号。
编译器将不再接受宏中的额外逗号。 要使代码在 Visual Studio .NET 2003 和 Visual Studio .NET 版本的 Visual C++ 中有效,请删除额外逗号。
// C4002b.cpp
// compile with: /W1
#define F(x,y)
int main()
{
F(2,,,,,,3,,,,,,) // C4002
// Try the following line instead:
// F(2,3)
}
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈