在不同编译器之间一致触发的警告

Warnings that will consistently get triggered across different compilers?

本文关键字:警告 编译器 之间      更新时间:2023-10-16

在编写了这个问题的答案并在编译时显示错误的解决方案后,我想知道是否有可能收到警告并完成编译(如问题中实际指定的那样(。

虽然诊断通常依赖于编译器,但对于某些代码来说,很明显会触发错误(例如访问不存在的成员或尝试实例化不完整类型的对象(。

但是,警告不能这样说,因为这些警告在编译器之间往往有很大差异。尽管可以合理地假设使用 GCC 触发的警告也会由 Clang 触发,但对于视觉C++来说却并非如此。

问题:
哪些警告(如果有(会在所有提到的三个编译器上持续触发?

可以假设VC++/W3和GCC和Clang -Wall


请注意,这不仅对该问题有用,而且对于触发用户定义的消息的警告也很有用。

这应该适用于MSVC,GCC和Clang:

#pragma message("hello world")

不是很有用,但仍然有效。

这些也收到了警告:

  • 未使用的变量
  • 未使用的标签
  • 大值,例如 (1 <<128(