Friday, September 24, 2010

[Debug] error: stray ‘\xxx’ in program

「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底下執行的由於不同系統採用了不同的編碼方式,導致compilercompile無法辨認某一種編碼規格此時便會產生錯誤


  • 案例:友人在windows底下用msn傳了份code給筆者, 而筆者此時是在使用Linux系統, 當筆者利用g++編譯時, 問題產生了,如底下截圖:


  • 問題及解決方法:會產生這個error的原因是, 筆者直接從msn的對話框中複製了該份code, 並直接使用, 而它的編碼方式與g++所認定的方法不一樣, 因此Bug產生。但我們code明明沒有寫錯, 再怎麼trace code也無法找出Bug。了解原因後, 解決方法就變簡單了, 您可以使用常用的Editor, 親自寫出code, 而不是直接從某個您不知道它編碼方式的文件複製/貼上code

  • 另外, 這種情況也常發生在直接複製網頁上的code, 例如:直接複製簡體中文的網頁, 往往會因為編碼問題而產生錯誤


  • 更多Bug方面的深入探討請見Reference. 1


Reference
  1. http://blog.joycode.com/jiangsheng/archive/2006/02/05/71101.aspx
  2. http://s428.photobucket.com/home/rbrovillos

0 意見: