Compiler可以幫助我們探測到很多潛在的bug,我們所要做的只是合理的設置編譯參數、並充分利用C++的各種特性。
通常我們可以利用編譯器提供的Syntax Check功能來檢測代碼,這樣可以避免生成大量臨時的obj文件。下面是用於代碼檢測的推薦編譯參數。
VC8:
命令行參數
/Zc:forScope /Zc:wchar_t /Wp64 /W4 /Wall /O2 /GR /EHsc /nologo /Zs
你可以用/wd來屏蔽某些warning,比如以下的warning通常可以忽略:
4061,4365,4619,4625,4626,4668,4710,4820
Intel Compiler 10:
命令行參數
/Zc:forScope /Zc:wchar_t /Wcheck /Wport /Wp64 /W4 /Wall /O3 /GR /GX /Qms0 /nologo /Zs
你可以用/Qwd來屏蔽某些warning,比如以下的warning通常可以忽略:
383,810,981
GCC:
命令行參數
-O3 -ansi --extra-warnings -W -Wall -fsyntax-only
你可以用-W來增加額外的檢查,比如下面這些:
"aggregate-return","cast-align","cast-qual","char-subscripts",
"comment","conversion","deprecated","effc++",
"float-equal","format=2","missing-format-attribute","missing-noreturn",
"old-style-cast",
"overloaded-virtual", "packed","padded",
"pointer-arith","redundant-decls","shadow","sign-promo","synth",
"trigraphs","no-unknown-pragmas","write-strings"