清理C/C++;代码揭示了可变宏的问题 我们正在对C、C++和java的代码库进行一些代码清理、固定签名/无符号比较、运行静态分析等。
我们得到的警告之一是清理C/C++;代码揭示了可变宏的问题 我们正在对C、C++和java的代码库进行一些代码清理、固定签名/无符号比较、运行静态分析等。,c++,c,macros,c99,variadic-macros,C++,C,Macros,C99,Variadic Macros,我们得到的警告之一是 warning: ISO C does not permit named variadic macros 以及随之而来的警告 warning: ISO C99 requires rest arguments to be used 现在,在C代码中,我用这个方法来修复这个问题,但是在C++代码中,什么是正确答案?使用相同的C99样式会导致不同的警告 warning: anonymous variadic macros were introduced in C99 我看
warning: ISO C does not permit named variadic macros
以及随之而来的警告
warning: ISO C99 requires rest arguments to be used
现在,在C代码中,我用这个方法来修复这个问题,但是在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诊断推送
#pragma GCC诊断被忽略“-wVariatic宏”
//您的代码和/或包含文件
//(此处没有可变警告)
#pragma-GCC-diagnostic-pop
可能重复使用C++11。在GCC命令行中键入-std=c++0x
或-std=c++11
。或者忽略了警告。是的,使用C++ 11还没有被完全认可,但它的支持还不够好,所以你基本上说“波波佩森没有办法消除警告(不关它们),因为在C++中11个变量不是标准的,直到C++ 11。@ Petri -我现在没有任何其他的方法。GCC 4.4.3可能不知道C++的最新更改。有没有办法禁用一段代码的警告,但一般来说还是保留它?如果我使用这个,我如何禁用警告:ISO C99要求使用rest参数
@Petriborg:Thank@Hasturkun我会尝试在臭名昭著的旧gcc-4.2.3中pragma对我不起作用,但是-Wno变量宏起作用,所以投票通过。pragma对我也不起作用,但我通过使它起作用“-w可变宏”
(不带否-
)