我包含了一个来自第三方库的文件,它引发了一个错误,可以降级为-fpermissive
警告。但是因为我不想用这些警告“污染”我的编译日志,所以我想完全禁用这些消息。
到目前为止,我在包含该文件时使用诊断杂注设置了-fpermissive
选项;比如:
#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版本也没有它)。
我能模仿这种行为吗?
2条答案
按热度按时间nwnhqdif1#
tldr:在GCC 4.7之后,您无法关闭fpermissive输出。
只是在这里发布它,以便它具有更多的可见性:不幸的是,zwol的回答(虽然意图良好,并且可能对那些使用旧GCC版本的人有帮助)不适用于GCC的最新版本。从GCC 4.8及更高版本开始,您无法关闭fpermissive输出。o11c在他对OP的评论中提供了以下跟踪此错误的有用信息:
请注意,它处于“已解决无效”状态,因此无法关闭它是预期的行为,并且没有计划对其进行更改。
iaqfqrcu2#
现在说这个可能有点晚了,但其中一个应该能满足你的要求:
字符串
或者是
型
“忽略”是你完全压制诊断的方式,由于历史原因,
-fpermissive
的逆是-pedantic
。