【发布时间】:2009-06-19 14:21:49
【问题描述】:
我不断从第三方库(我不想调试)收到此警告,因此我非常感谢一种抑制此特定警告的方法。 Google 让我失望了,所以我来了。
【问题讨论】:
标签: c++ gcc gcc-warning
我不断从第三方库(我不想调试)收到此警告,因此我非常感谢一种抑制此特定警告的方法。 Google 让我失望了,所以我来了。
【问题讨论】:
标签: c++ gcc gcc-warning
-Wno-enum-compare 绕过此警告。
【讨论】:
在 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 找出控制特定警告的选项。
当然,解决所有警告的根本原因通常比抑制警告要好得多!但是,有时这是不可能的。
【讨论】:
好吧,因为我找不到禁用此特定警告的方法,所以我求助于使用 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),但我没有对其进行测试。
【讨论】:
#pragma GCC system_header 把我从一堆无意义的警告中救了出来。
以下标志不会消除该警告吗?
-Wno-enum-promotion
【讨论】: