首先,我希望它停止警告.但我也希望打印出一些信息性的消息(比如“回来实现这个!”).
不幸的是,我的编译器不支持#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
您还可以使用-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,如果需要它需要单独提供.