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

piw*_*iwi 22 c++ gcc warnings pragma

我包含来自第三方库的文件,该文件引发了一个错误,可以将其降级为警告-fpermissive.但是因为我不想用这些警告"污染"我的编译日志,所以我想完全禁用这些消息.

到目前为止,我在包含文件时-fpermissive使用诊断编译指示设置选项; 就像是:

#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-fpermissive"

#include <third-party-file.h>

#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)

由于gcc通常提供-f标志的"正面"和"负面"版本,我想忽略了"不允许"的功能:

#pragma GCC diagnostic ignored "-fno-permissive"
#include <third-party-file.h>
Run Code Online (Sandbox Code Playgroud)

但似乎没有-fpermissive标志的"负面"版本(我正在使用gcc 4.6.3;但即使版本4.7.0 也没有它).

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

zwo*_*wol 12

这可能有点晚了,但其中一个应该做你想要的:

#pragma GCC diagnostic ignored "-fpermissive"
Run Code Online (Sandbox Code Playgroud)

要么

#pragma GCC diagnostic ignored "-pedantic"
Run Code Online (Sandbox Code Playgroud)

"忽略"是你如何压制诊断完全和逆-fpermissive-pedantic,由于历史的原因.

  • 不幸的是,至少它们都不适用于g ++(GCC)4.8.2. (9认同)

fir*_*ush 8

tldr:GCC 4.7后无法关闭闪烁输出.


只是在这里发布它,因此它具有更高的可见性:不幸的是,zwol的答案(虽然用心良好,并且可能对那些使用较旧GCC版本的人有帮助)但不适用于更新版本的GCC.从GCC 4.8及更高版本,您无法关闭闪烁输出.o11c在他对OP的评论中有助于提供以下跟踪此问题的错误:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81787

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

  • 哼。我对无法关闭此功能的争论不以为然。“更改了 C++ 语言的含义”,“将有关不合格代码的诊断降级为警告”,bonnet blanc,blanc bonnet。 (5认同)