com*_*ugs 5 gcc compiler-warnings visual-c++
我有一个用gcc和vc ++编译的代码.代码有一个公共宏,在两个场景中调用.
这种代码的一个例子是:
#define B(X) A1##X
int main() {
int B(123), B();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译预处理步骤的期望输出是:
int main() {
int A1123, A1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
gcc和vc ++的输出都是预期的,但vc ++会发出警告:
warning C4003: not enough actual parameters for macro 'B'
Run Code Online (Sandbox Code Playgroud)
如何删除此警告并获得预期输出?
谢谢.
这可能取决于你的 VC++ 版本等
#define B(...) A1##__VA_ARGS__Run Code Online (Sandbox Code Playgroud)
我不知道 vc++ 是否会喜欢空的 va 参数,但它值得一试 - 让我知道这是否有效:)