如何在Clang中禁用#pragma message的警告?

4

#pragma message 在Clang中被实现为警告。有没有办法只针对这个#pragma禁用警告,以便它像MS Visual Studio一样工作,或者有其他的方法从代码中生成信息提示?(我需要作为使用Clang的终端用户得到答案,我不能在此项目上重新编译Clang本身)

1个回答

6
我知道这篇文章已经有一年了,OP可能已经找到了答案,但是因为我自己也在寻找答案,所以我想在这里包含一些信息。

根据Clang用户手册:

https://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas

该预处理指令可以控制命令行中可用的任何警告。 警告可以设置为忽略,警告,错误或致命。

尝试将类别设置为上述选项之外的其他内容:

#pragma clang diagnostic push
#pragma clang diagnostic note "-W#pragma-messages"
#pragma message "HELLO!"
#pragma clang diagnostic pop

int main(int argc, char **argv)
{
}

显示相同选项的警告结果:

/tmp/test.cc:3:26: warning: pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop' [-Wunknown-pragmas]
#pragma clang diagnostic note "-W#pragma-messages"
                          ^
/tmp/test.cc:4:9: warning: HELLO! [-W#pragma-messages]
#pragma message "HELLO!"
         ^
2 warnings generated.

看起来从Clang 5.0开始,没有办法将消息视为信息而不是警告。


在clang 12中似乎是这种情况,#pragma message ... 出现了两次,一次作为警告,一次作为消息。 - alfC
我可以添加 #pragma clang diagnostic push #pragma clang diagnostic warning "-W#pragma-messages" ... etc 但这样会完全删除消息。 - alfC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接