“=”号惹得祸

这一点即使强调一万遍也不为过:在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: }

编译上面的程序会报错: 不能给常量赋值!因此,极力推荐这种常量在前的写法,这是防止犯下愚蠢错误的细节!

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