「The key to eliminating bugs from your code is learning from your mistakes.」
~ by Jerry Jongerius
「人非聖賢,孰能無過」,再厲害的programmer也無法百分之百肯定自己的code是bug-free的 [Ref.1]。以目前Trek的等級,無法長篇大論,只能先case by case的來舉出平常實作當中所遇到的「小問題,小Bug」,但初學者往往忽略了這些小細節,而浪費了許多時間。就像Jerry在本文開頭所言,至少我們需要記住這隻臭蟲,那麼,它將不再出現。
這篇文章目的要紀錄一個例子,
- 試想,當我們在coding時,可能使用了不同的Editor,不同的compiler,甚至是在不同的OS底下執行的。由於不同系統採用了不同的編碼方式,導致compiler在compile時無法辨認某一種編碼規格,此時便會產生錯誤。
- 案例:友人在windows底下用msn傳了份code給筆者, 而筆者此時是在使用Linux系統, 當筆者利用g++編譯時, 問題產生了,如底下截圖:
- 問題及解決方法:會產生這個error的原因是, 筆者直接從msn的對話框中複製了該份code, 並直接使用, 而它的編碼方式與g++所認定的方法不一樣, 因此Bug產生。但我們code明明沒有寫錯, 再怎麼trace code也無法找出Bug。了解原因後, 解決方法就變簡單了, 您可以使用常用的Editor, 親自寫出code, 而不是直接從某個您不知道它編碼方式的文件複製/貼上code
- 另外, 這種情況也常發生在直接複製網頁上的code, 例如:直接複製簡體中文的網頁, 往往會因為編碼問題而產生錯誤
- 更多Bug方面的深入探討請見Reference. 1
Reference
- http://blog.joycode.com/jiangsheng/archive/2006/02/05/71101.aspx
- http://s428.photobucket.com/home/rbrovillos
0 意見:
Post a Comment