我无法使在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
答案 0 :(得分:1)
这是GCC C ++前端中长期存在的功能:
使用g++
中的程序无法控制预处理产生的警告。与C前端不同,pragma仅在C ++前端的预处理阶段之后进行处理。