抑制-GCC中的Wunknown杂注警告

抑制-GCC中的Wunknown杂注警告,gcc,warnings,pragma,suppress-warnings,Gcc,Warnings,Pragma,Suppress Warnings,我尝试忽略来自以下第三方头文件的警告: #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 #pragma GCC诊断推送 #已忽略pragma GCC诊断“-Wun

我尝试忽略来自以下第三方头文件的警告:

#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
#pragma GCC诊断推送
#已忽略pragma GCC诊断“-Wunknown pragma”
#pragma GCC诊断已忽略“-Wreorder”
#包括
#pragma-GCC-diagnostic-pop
这种方法似乎在一般情况下有效,但不适用于未知的pragma警告(我仍然能得到它们)

为什么它适用于其他警告,但不适用于此警告?有人能证实这种行为吗


我在Debian下使用带有
-Wall
-std=c++0x
的g++(版本4.7.1)。

我也遇到了这种麻烦。根据GCC手册页
-Wall
为您打开
-Wunknown pragmas
,因此只需在
-Wall
之后使用
-Wno unknown pragmas
手动禁用它

有一个GCC功能请求使用
#pragma GCC diagnostic


嗯,gcc尊重抑制,而g++不尊重。
-Wno unknown pragmas
是一个选项吗?@DanielFischer我猜你的意思是作为编译器的命令行参数?这会在我自己的代码中禁用警告,我不想这样。好的,可以理解。也许您可以尝试将这些头作为系统头,正如建议的那样?这确实是一个很好的解决方案,从一开始它就是我的第一选择。但我正在使用Eclipse(自动生成的make文件),Eclipse似乎没有提供将包含目录标记为系统包含目录的方法。所以它总是使用
-I
而不是
-isystem
。可能与此错误有关: