【发布时间】:2012-10-02 06:42:48
【问题描述】:
我尝试忽略来自某些 3rd 方头文件的警告,如下所示:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
#pragma GCC diagnostic ignored "-Wreorder"
#include <some_3rd_party_header.h>
#pragma GCC diagnostic pop
这种方法似乎普遍有效,但不适用于未知的编译指示警告(我仍然得到它们)。
为什么它适用于其他警告但不适用于这个?谁能确认这种行为?
我在 Debian 下使用带有 -Wall 和 -std=c++0x 的 g++(版本 4.7.1)。
【问题讨论】:
-
嗯,gcc 尊重抑制,g++ 不尊重。
-Wno-unknown-pragmas是一个选项吗? -
@DanielFischer 我猜你的意思是作为编译器的命令行参数?这也会在我自己不想要的代码中禁用警告。
-
好的,可以理解。也许您可以尝试将这些标头包含为系统标头,如 here 建议的那样?
-
这确实是一个不错的解决方案,而且它从一开始就是我的首选。但是我正在使用 Eclipse(自动生成的 make 文件)并且 Eclipse 似乎没有提供将包含目录标记为系统包含目录的方法。所以它总是使用
-I而不是-isystem。
标签: gcc warnings pragma suppress-warnings