如果程序根据C ++ 11标准以不可预测的方式运行,是否有任何命令行选项或技术使GCC编译器报告错误?
答案 0 :(得分:6)
...让编译器报告一些错误...
是的,有很多警告会检测到可能的UB,您可以使用GCC的-Werror
选项将警告变为错误。
同样如@LogicStuff's comment中所述,GCC支持Undefined Behavior Sanitizer。
虽然检测UB的更好工具主要是静态代码分析工具,它可以检测大多数此类缺陷。
在任何情况下,您都必须处理误报,并且需要再次检查您的代码。