“=”號惹得禍

這一點即使強調一萬遍也不爲過:在C++中,千萬不要把“==”寫成”=”;否則你的程序會死的很難看!

但是,現實中即使是那些天才程序員也會犯這種極其愚蠢的錯誤,但願大家不要在Check-In代碼的時候寫上”type error”. 我看不慣這種註釋。

上週,由於有大客戶要一個DEMO,加班加點實現一個BlueRay Disk的刻錄外加transcoding的程序,總是在刻錄最後的時候程序crash,提示訪問地址非法;但是,怎麼看怎麼也找不出問題來,總感覺那個地址好像被其他模塊或者線程修改了,也就是可能有其它部分內存操作越界了(注意,這是在嵌入式操作系統上);這下麻煩大了,調試了3天也沒找出問題;後來,一點一點的看code,終於發現問題:

   1:  
   2: if (audio.frequency = 48000)
   3: {
   4:     ...
   5: }

看到沒,就這麼小小的一個字符;把它改正了之後,程序跑的可歡實了!因爲是嵌入式系統,所以,一些不規範的寫法,或者愚蠢的錯誤,會導致各種莫名其妙的系統異常,從慘痛教訓中,我們才明白了這一點。有時候,程序的寫法上稍稍做一下改動就會避免這個問題:

   1: if (48000 = audio.frequency)
   2: {
   3:     ...
   4: }

編譯上面的程序會報錯: 不能給常量賦值!因此,極力推薦這種常量在前的寫法,這是防止犯下愚蠢錯誤的細節!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章