在gcc中,如何将-fpermissive警告静音?

时间:2012-06-07 13:09:44

标签: c++ gcc warnings pragma

我在第三方库中包含了一个文件,该文件引发了一个错误,该错误可以降级为-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)。

我有机会模仿这种行为吗?谢谢!

2 个答案:

答案 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

请注意,它处于“已解决无效”状态,因此无法关闭它是预期的行为,并且没有计划对其进行更改。