5

我不断从第三方库(我不想调试)收到此警告,因此我非常感谢一种抑制此特定警告的方法。谷歌让我失望了,所以我在这里。

4

4 回答 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 回答