无法暂时停用GCC中的未知实用程序警告

时间:2019-03-08 18:54:03

标签: gcc g++ pragma

我无法使在GCC中临时禁用警告的方法有效(请参见How to disable GCC warnings for a few lines of code),至少对于“ unknown-pragmas”警告而言无效。

正在编译此代码...

#pragma comment(user,"This should depend on the command line options")

#pragma GCC diagnostic warning "-Wunknown-pragmas"
#pragma comment(user,"This should cause a warning")

#pragma GCC diagnostic error "-Wunknown-pragmas"
#pragma comment(user,"This should cause an error")

#pragma GCC diagnostic ignored "-Wunknown-pragmas"
#pragma comment(user,"This should be ignored")

...不会产生任何警告/错误(除了链接程序会抱怨缺少main),或者使用-Wall或仅使用-Wunknown-pragmas时,都会为每个警告均产生一个警告评论实用。

我期望的行为是每条评论都应该引起评论的确切表达。

我想我可以用documentation支持我的期望:

  

目前只能控制警告(通常由“ -W ...”控制),而不能全部控制。使用-fdiagnostics-show-option来确定哪些诊断是可控制的,以及哪个选项可以控制它们。

我得到的警告显示为

warning: ignoring #pragma comment  [-Wunknown-pragmas]

并且如括号中的内容所示,

  • 此诊断 是可控的
  • 和选项-Wunknown-pragmas对其进行控制

因此我的代码应该可以工作。

那我在做什么错了?


版本信息:

$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609

1 个答案:

答案 0 :(得分:1)

这是GCC C ++前端中长期存在的功能:

使用g++中的程序无法控制预处理产生的警告。与C前端不同,pragma仅在C ++前端的预处理阶段之后进行处理。