清理C/C++代码揭示了可变宏的问题

Cleaning up C/C++ code reveals problems with variadic macros

本文关键字:问题 C++ 代码 清理      更新时间:2023-10-16

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

我们收到的警告之一是

warning: ISO C does not permit named variadic macros

及其配套警告

warning: ISO C99 requires rest arguments to be used

现在,在C代码中,我使用了C99标准可变宏来解决这个问题,但在C++代码中,正确的答案是什么?使用相同的C99型号会产生不同的警告

warning: anonymous variadic macros were introduced in C99 

对此,我看不到任何答案。

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

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

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

编辑:(来自评论)

要禁用代码段的警告,但通常保持打开状态,请使用此处描述的#pragma GCC diagnostic

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wvariadic-macros"
    // Your code and/or include files
    // (No variadic warnings here)
#pragma GCC diagnostic pop