-Werror导致编译器在#warning上停止.我该怎么做才能防止这种情况发生?

前端之家收集整理的这篇文章主要介绍了-Werror导致编译器在#warning上停止.我该怎么做才能防止这种情况发生?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,我希望它停止警告.但我也希望打印出一些信息性的消息(比如“回来实现这个!”).

不幸的是,我的编译器不支持#info,#message,#pragma message()等.

我知道有-Wno-error =< something>,但是我的google-foo很弱,我似乎无法找到< something>为#warning.我试过-Wno-error =警告,只是说“没有 – 警告”.与“警告”相同.

有什么建议?

值得一提的是,我使用的是Tensilica xtensa编译器,xt-xcc,它似乎是一个gnu派生词,或者至少使用了gnu前端.它的版本是8.0.0.

解决方法

我不熟悉Tensilica xtensa编译器(xt-xcc),但您可以使用标准 gcc
#pragma GCC diagnostic warning "-Wcpp"

使#warning成为简单警告的问题(因为-Werror而不是错误).要使效果暂时,您可以使用#pragma和#wragma GCC诊断推送和#pragma GCC诊断pop之间的#warning.

当我编译包含以下内容文件

#pragma GCC diagnostic push
    #pragma GCC diagnostic warning "-Wcpp"
    #warning one
    #pragma GCC diagnostic pop

    #warning two

使用-cerror使用gcc 4.6.1(命令gcc -c -Werror warning-test.c),我得到以下输出

warning-test.c:3:2: warning: #warning one [-Wcpp]
    warning-test.c:6:2: error: #warning two [-Werror=cpp]
    cc1: all warnings being treated as errors

当我删除第二个#warning时,编译不会被错误中断.

您还可以使用-Werror -Wno-error = cpp替换-Werror编译器选项.我不知道cpp类别的警告包含哪些其他影响(并且您可能在其他某个地方有一个合法的#warning要捕获为错误),因此暂时禁用特定#warning的错误并立即恢复设置似乎更准确的方法满足您的要求.

编辑(2016):使用gcc版本4.8.4和4.9.2给出了几乎相同的行为(仅额外打印出源代码行).但是使用gcc版本5.0.1(Ubuntu 15.04中包含的预发布版本)将提供两个警告,除非包含选项-Werror = cpp.所以似乎 – 更新gcc的错误不再像以前那样暗示-Werror = cpp,如果需要它需要单独提供.

原文链接:https://www.f2er.com/c/119297.html

猜你在找的C&C++相关文章