是否有任何技术可以检测GCC的未定义行为?

Dán*_*dor 4 c++ gcc c++11

如果程序根据C++ 11标准以不可预测的方式运行,是否有任何命令行选项或技术使GCC编译器报告错误?

πάν*_*ῥεῖ 6

...让编译器报告一些错误......

是的,有许多警告确实检测到可能的UB,您可以使用-WerrorGCC选项将警告变为错误.

同样如@ LogicStuff的评论中所述, GCC支持Undefined Behavior Sanitizer.

虽然检测UB的更好工具主要是静态代码分析工具,它可以检测大多数此类缺陷.

在任何情况下,您都必须处理误报,并且需要再次检查您的代码.