c++ - 会在不同编译器中持续触发的警告?

标签 c++ visual-c++ gcc compiler-warnings clang

写完 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/

相关文章:

c++ - Qt/mingw32 undefined reference 错误...无法链接.lib

c++ - i2d_X509_REQ_INFO 没有正确转换 req_info 结构

c++ - 显式初始化指针 vector 会导致转换错误?

c++ - 函数属性应该放在哪里?

c++ - fatal error : sys/statvfs. h:没有那个文件或目录

c++ - boost asio SSL 服务器错误 : called a function you should not call

c++ - 寻找开源平面文件/xml 数据库 C++ 库

c++ - C++ 函数可以返回一个指向已知长度数组的指针吗?

c++ - 如何在C++中为二维数组赋值

c++ - 为什么 wcslen 在 argv[1] 上计算 1 个额外字符?