2016年8月29日 星期一

給新手的C++教學 (上冊) - 13 - 2. 編譯參數的建議設定

回到「給新手的C++教學 (上冊)」

回到「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」來輸入和輸出啦!!!
於是問題就被輕鬆完美的解決~(?)
耶!
專業上我們稱「橘色字」這個東西叫做「警告 (Warning)」
誠摯建議,就算您的程式碼在測試下似乎可以發揮正常的功能,也要盡量達成「零警告」的目標
這是很重要的,有警告意味著程式碼可能潛藏著已知錯誤,這些已知錯誤可能在特殊情況下才會造成問題,因此通常很難用肉眼或稍微的測試就檢查出來
當然,「零警告」並不代表您的程式碼保證100%正確,只代表您已經剔除95%的常見白癡錯誤
如遇不知道怎麼消除警告的程式碼,歡迎在本文下面留言發問~

順帶一提,設定完編譯參數的同時也讓您可以盡情使用C++11更方便的新語法

下一頁

感謝:
(版權所有 All copyright reserved)

沒有留言:

張貼留言

歡迎留言或問問題~
若您的留言中包含程式碼,請參考這篇
如果留言不見了請別慌,那是因為被google誤判成垃圾留言,小莫會盡快將其手動還原

注意:只有此網誌的成員可以留言。