我們正在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