18.2 讓編譯器幫你抓錯:警告參數
查錯最便宜的一步,其實發生在程式執行之前。編譯器在編譯時就看得出很多可疑寫法,只是預設不太愛講話;加上警告參數,它就會變成一位囉唆但可靠的隊友。在終端機編譯時直接加在指令裡:
g++ -O2 -Wall -Wextra -Wshadow main.cpp指令裡的 -O2 是最佳化參數,本站 OJ 評測時同樣開著它。它除了讓程式跑得更快,還會讓編譯器把整份程式分析得更透徹——有些警告要開著最佳化才抓得到(第一個例子馬上就會看到),所以請把它跟警告參數綁在一起用。用 Code::Blocks 的話,在 Settings → Compiler... 裡把對應的警告項目和最佳化 -O2 一併打勾即可,效果相同。以下逐一介紹四個最值得開的參數——每個都配一段「真的會被抓到」的錯誤程式,警告訊息都是本站編譯器(GNU g++)的實際輸出。