不幸的是,我的编译器不支持#info,#message,#pragma message()等.
我知道有-Wno-error =< something>,但是我的google-foo很弱,我似乎无法找到< something>为#warning.我试过-Wno-error =警告,只是说“没有 – 警告”.与“警告”相同.
有什么建议?
值得一提的是,我使用的是Tensilica xtensa编译器,xt-xcc,它似乎是一个gnu派生词,或者至少使用了gnu前端.它的版本是8.0.0.
解决方法
#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,如果需要它需要单独提供.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。