清理C / C ++代码会显示可变参数宏的问题

时间:2012-03-19 17:54:26

标签: c++ c macros c99 variadic-macros

我们正在C,C ++和Java的代码库上进行一些代码清理,修复签名/无符号比较,运行静态分析等。

我们得到的警告之一是

warning: ISO C does not permit named variadic macros

及其伴随警告

warning: ISO C99 requires rest arguments to be used

现在,在C代码中我使用C99 standard variadic macro来解决问题,但在C ++代码中,正确的答案是什么?使用相同的C99样式会产生不同的警告

warning: anonymous variadic macros were introduced in C99 

我没有看到任何答案。

我们在Linux中使用GCC(G ++)4.4.3。

我希望有一些标志或其他方法可以纠正或禁用代码的特定部分 - 但它用于几乎每个文件中使用的日志...

1 个答案:

答案 0 :(得分:14)

使用gcc选项-Wno-variadic-macros禁用该特定警告。

编辑:(来自评论)

要禁用某段代码的警告但通常将其保留,请使用#pragma GCC diagnostic described here

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wno-variadic-macros"

    // Your code and/or include files
    // (No variadic warnings here)

#pragma GCC diagnostic pop