【问题标题】:Suppress -Wunknown-pragmas warning in GCC抑制 GCC 中的 -Wunknown-pragmas 警告
【发布时间】: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.gnu.org/bugzilla/show_bug.cgi?id=53431

标签: gcc warnings pragma suppress-warnings


【解决方案1】:

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

有一个 GCC 功能请求使用 #pragma GCC diagnostic 来完成这项工作:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2010-12-24
    • 2011-03-25
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多