3
如果程序沒有按照C++ 11標準以可預測的方式運行,是否有任何命令行選項或技術可以使GCC編譯器報告錯誤?是否有任何技術來檢測與GCC未定義行爲?
如果程序沒有按照C++ 11標準以可預測的方式運行,是否有任何命令行選項或技術可以使GCC編譯器報告錯誤?是否有任何技術來檢測與GCC未定義行爲?
...使編譯器報告的一些錯誤......
是的,有一些警告的根本察覺可能UB,你可以使用的-Werror
選項把警告轉化爲錯誤GCC。
同樣如@LogicStuff's comment中所述,GCC支持Undefined Behavior Sanitizer。
雖然更好的工具來檢測UB大多是靜態代碼分析工具,它可以檢測到大多數這樣的缺陷。
你必須雖然應對任何情況下誤判,並需要再次深刻檢查你的代碼。
一個良好的開端是'-Wall -Werror'編譯。 – erip
通過「程序」,你的意思是編譯器或者你正在寫的程序? – Maestro
GCC有[Undefined Behavior Sanitizer](http://stackoverflow.com/questions/20738232/gcc-4-9-undefined-behavior-sanitizer)。 – LogicStuff