回到「13. 額外語法 (Extra syntax)」
上一頁
你在寫程式的時候,是否曾經犯過白癡錯誤呢?
有些錯誤是人可以很輕易識別的,但是卻恰好符合C++的語法而不會讓電腦察覺異狀
例如:
#include<cstdio> int main() { float a,b; scanf("%d%d",&a,&b); printf("%d\n",a+b); return 0; }
我知道你要做出小數加法,但是程式可以正常執行卻輸出錯誤答案 (不知道的趕快去試試看!輸入「0.1 0.1」,保證輸出不是「0.2」)
怎麼會這樣?Orz |
又偏偏錯誤在寫程式當下很難被察覺,可能直到整個幾十行甚至幾百行的程式碼寫完之後,才發現程式執行起來不對勁 (你發現哪裡寫錯了嗎?XD)
這樣一來要回去檢查整個程式碼就是非常麻煩的一件事
偷偷告訴你,這種白癡錯誤其實可以偷懶叫學過C++的電腦幫你找哦~
保證萬無一失!
方法如下:
1. 打開「工具 (Tools)」,然後選擇「編譯器選項 (Compile Options...)」
進入編譯器選項 |
2. 在「一般 (General)」標籤裡面,把「呼叫編譯器時加入以下的命令 (Add the following commands when calling the compiler)」勾起來 (如果原本沒打勾的話),然後在上面那個文字框裡面輸入「-Wall -Wextra -Wshadow -Wconversion -std=c++11」,按「確定 (OK)」按鈕
輸入「-Wall -Wextra -Wshadow -Wconversion -std=c++11」後按「OK」 |
3. 設定完成了!現在嘗試再按一次「F11」看看
按下「F11」後程式還是正常執行了,但有沒有注意到多了幾行橘色的字? |
哈!電腦抓到錯誤了!
那些橘色的字就是電腦認為你犯了哪些白癡錯誤
在橘色的字上點兩下,就會把該錯誤對應的那一行用紅色標出來,你就只要檢查那一行哪裡出錯就好了!
恩,聽說這一行有白癡錯誤...... 啊,「float」要用「%f」來輸入和輸出啦!!! |
耶! |
誠摯建議,就算您的程式碼在測試下似乎可以發揮正常的功能,也要盡量達成「零警告」的目標
這是很重要的,有警告意味著程式碼可能潛藏著已知錯誤,這些已知錯誤可能在特殊情況下才會造成問題,因此通常很難用肉眼或稍微的測試就檢查出來
當然,「零警告」並不代表您的程式碼保證100%正確,只代表您已經剔除95%的常見白癡錯誤
如遇不知道怎麼消除警告的程式碼,歡迎在本文下面留言發問~
順帶一提,設定完編譯參數的同時也讓您可以盡情使用C++11更方便的新語法!
下一頁
感謝:
(版權所有 All copyright reserved)
沒有留言:
張貼留言
歡迎留言或問問題~
若您的留言中包含程式碼,請參考這篇
如果留言不見了請別慌,那是因為被google誤判成垃圾留言,小莫會盡快將其手動還原
注意:只有此網誌的成員可以留言。