我们正在C,C++和Java的代码库中进行一些代码清理,修复签名/无符号比较,运行静态分析等。清理C/C++代码揭示了可变宏的问题
一个我们得到的警告是
warning: ISO C does not permit named variadic macros
及其配套警告
warning: ISO C99 requires rest arguments to be used
现在,我用C99 standard variadic macro来解决这个问题的C代码,但在C++代码,什么是正确的答案?使用相同的C99风格会产生不同的警告
warning: anonymous variadic macros were introduced in C99
对于哪个我没有看到任何答案。
我们在Linux中使用GCC(G ++)4.4.3。
我希望有一些标志或其他方法,可以纠正,或禁用它为特定的代码段 - 但它这是在几乎每一个文件中使用的日志记录...
可能重复[是复杂的宏非标准?](http://stackoverflow.com/questions/4786649/are-variadic-macros-nonstandard) – 2012-03-19 17:59:38
使用C++ 11。在你的GCC命令行上键入'-std = C++ 0x'或'-std = C++ 11'。或者只是忽略警告。 – 2012-03-19 18:02:27
是的,使用c + + 11还没有在卡中,它只是没有得到很好的支持(尚未) – Petriborg 2012-03-19 18:04:45