我在第三方库中包含了一个文件,该文件引发了一个错误,该错误可以降级为-fpermissive
的警告。但是因为我不想用这些警告“污染”我的编译日志,所以我想完全禁用这些消息。
到目前为止,我在包含文件时将-fpermissive
选项设置为diagnostic pragma;类似的东西:
#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-fpermissive"
#include <third-party-file.h>
#pragma GCC diagnostic pop
由于gcc通常提供-f
标志的“正面”和“负面”版本,我想忽略了“不允许”的功能:
#pragma GCC diagnostic ignored "-fno-permissive"
#include <third-party-file.h>
但似乎没有-fpermissive
标志的“否定”版本(我正在使用gcc 4.6.3;但即使是版本4.7.0 does not have it)。
我有机会模仿这种行为吗?谢谢!
答案 0 :(得分:12)
这可能有点晚了,但其中一个应该做你想做的事情:
#pragma GCC diagnostic ignored "-fpermissive"
或
#pragma GCC diagnostic ignored "-pedantic"
“忽略”是您完全压制诊断的方式,-fpermissive
的倒数是-pedantic
,原因是历史原因。
答案 1 :(得分:5)
tldr:您无法在GCC 4.7之后关闭虚假输出。
仅在此处发布此内容,以便它具有更高的可见性:不幸的是,zwol的答案(虽然意图良好,并且可能对具有较旧GCC版本的用户有所帮助)不适用于较新版本的GCC。从GCC 4.8及更高版本开始,您无法关闭虚假输出。 o11c在对OP的评论中有帮助地提供了以下跟踪此错误的错误:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81787
请注意,它处于“已解决无效”状态,因此无法关闭它是预期的行为,并且没有计划对其进行更改。