如何在Clang中禁用pragma消息的警告?

时间:2016-02-23 15:50:23

标签: clang warnings message pragma

#pragma message在Clang中实现为警告。 有没有办法只为这个pragma禁用警告,所以它会像MS Visual Studio,或其他一些方式从代码中提供信息性消息? (我需要一个给定Clang作为最终用户的答案,我不能在这个项目中重新编译Clang本身)

谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

我意识到这篇文章已经有一年了,OP可能已经找到了他的答案,但由于我自己也在寻找答案,我想我也可以在这里包含这些信息。

从Clang用户手册:

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

  

pragma可以控制可以从命令行使用的任何警告。警告可能被设置为忽略,警告,错误或致命。

尝试将类设置为上述以外的类别:

#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开始,无法将消息视为信息而非警告。