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

Joh*_* D. 4 warnings message pragma clang

#pragma message在 Clang 中作为警告实现。有没有办法仅禁用此编译指示的警告,以便它像 MS Visual Studio 一样,或通过其他方式从代码中提供信息消息?(作为具有给定 Clang 的最终用户,我需要一个答案,我无法在该项目上重新编译 Clang 本身)

Mik*_* N. 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)
{
}
Run Code Online (Sandbox Code Playgroud)

导致警告显示相同的选项:

/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.
Run Code Online (Sandbox Code Playgroud)

因此,从 Clang 5.0 开始,似乎无法将消息视为信息性消息而不是警告。