与GCC的pragma GCC诊断警告

时间:2013-08-15 17:08:49

标签: c++ warnings

我使用gcc 4.5.1并收到警告:

warning: expected [error|warning|ignored] after '#pragma GCC diagnostic'

原因是“#pragma GCC诊断推送”,GCC不存在< 4.6。

我无法更改代码(不是我的代码)和gcc版本。 如何禁用这些警告?一些gcc标志可能是?

P.S。我看到Why "pragma GCC diagnostic push" pop warning in GCC/C++?,我的问题没有答案。

2 个答案:

答案 0 :(得分:8)

gcc有两个标志来控制有关pragma的警告:

  

<强> -Wunknown pragma的   遇到GCC无法理解的“#pragma”指令时发出警告。如果使用此命令行选项,则警告为   甚至在系统中发布了未知的pragma              头文件。如果警告仅由-Wall命令行选项启用,则情况并非如此。

     

<强> -Wno pragma的   不要警告错误使用pragma,例如参数不正确,语法无效或pragma之间的冲突。也可以看看   -Wunknown-PR

您可以使用-Wno-unknown-pragmas关闭它们。

答案 1 :(得分:0)

这似乎是您的选择:

  1. 使用-Wno-pragmas来抑制所有不正确的pragma使用警告。我不相信可以忽略只是您感兴趣的实用工具。
  2. 忽略警告输出。你已经被编译器警告过了,所以它完成了它的工作。您知道警告发生的原因以及基础案例是否无害。
  3. 使用sed find / replace删除仅适用于您的副本的违规#pragmas。您可以将其合并到构建脚本中,并让它动态生成源文件的副本。您可以使用sed注释掉有问题的#pragmas并使用反向转换来取消注释(例如,在提交到共享存储库之前)。
  4. 在本地编译GCC 4.6并使用它。
  5. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html有相关的警告信息。