我不断从第三方库(我不想调试)收到此警告,因此我非常感谢一种抑制此特定警告的方法。谷歌让我失望了,所以我在这里。
user125778
问问题
3858 次
4 回答
1
在 gcc4.6 及更高版本中,您可以使用编译指示来抑制特定的警告,并且只对特定的代码块进行抑制,即:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wno-enum-compare"
// Code that causes warning goes here
#pragma GCC diagnostic pop
push/pop 用于保留在处理代码之前存在的诊断选项。
这将是一种比#pragma GCC system_header
用于抑制所有警告更好的方法。(当然,在较旧的 gcc 中,您可能会“卡住”该#pragma GCC system_header
方法!)
这是关于抑制 gcc 警告的一个很好的参考:http ://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html
此页面还描述了如何使用-fdiagnostics-show-option
来找出控制特定警告的选项。
当然,解决所有警告的根本原因通常比压制它们要好得多!但是,有时这是不可能的。
于 2014-09-16T18:36:31.400 回答
1
-Wno-enum-compare
绕过这个警告。
于 2011-12-22T21:22:03.103 回答
0
好吧,由于我找不到禁用此特定警告的方法,因此我求助于使用 gcc 的#pragma system_header。基本上,我像这样包装有问题的标题:
#if 定义了 __GNUC__ #pragma GCC system_header #elif 定义 __SUNPRO_CC #pragma disable_warn #elif 定义 _MSC_VER #pragma 警告(推,1) #万一 #include "foo.h" #如果定义了 __SUNPRO_CC #pragma enable_warn #elif 定义 _MSC_VER #pragma 警告(弹出) #万一
其中 foo.h 是有问题的标头。现在我只包含这个 fooWrapper.h,问题就消失了。请注意,这也适用于其他一些编译器(MSC 和 SUNPRO),但我没有对其进行测试。
于 2009-06-20T09:15:20.757 回答
0
以下标志不会消除该警告吗?
-Wno-enum-promotion
于 2009-06-19T14:35:18.490 回答