写完 this question 的答案后它在编译时显示解决方案并出现错误,我想知道是否有可能获得警告并完成编译(正如问题中实际指定的那样)。
虽然诊断通常依赖于编译器,但对于某些代码来说很明显会触发错误(例如访问不存在的成员或尝试实例化不完整类型的对象)。
但是对于警告则不能这样说,因为它们往往在编译器之间有很大差异。尽管可以合理地假设用 GCC 触发的警告也会用 Clang 触发,但对于 Visual C++ 却不能这样说。
问题:
哪些警告(如果有的话)会在上述所有三个编译器上持续触发?
/W3
在 VC++ 上和 -Wall
在 GCC 和 Clang 上可以假设。
请注意,这不仅对那个问题有用,而且对于触发用户定义消息的警告也可能有用。
最佳答案
这应该适用于 MSVC、GCC 和 Clang:
#pragma message("hello world")
不是很有用,但仍然有效。
这些也收到了警告:
- 未使用的变量
- 未使用的标签
- 大值,例如(1 << 128)
关于c++ - 会在不同编译器中持续触发的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769357/