“=”号惹得祸
2010-06-04 12:36
218 查看
这一点即使强调一万遍也不为过:在C++中,千万不要把“==”写成”=”;否则你的程序会死的很难看!
但是,现实中即使是那些天才程序员也会犯这种极其愚蠢的错误,但愿大家不要在Check-In代码的时候写上”type error”. 我看不惯这种注释。
上周,由于有大客户要一个DEMO,加班加点实现一个BlueRay Disk的刻录外加transcoding的程序,总是在刻录最后的时候程序crash,提示访问地址非法;但是,怎么看怎么也找不出问题来,总感觉那个地址好像被其他模块或者线程修改了,也就是可能有其它部分内存操作越界了(注意,这是在嵌入式操作系统上);这下麻烦大了,调试了3天也没找出问题;后来,一点一点的看code,终于发现问题:
看到没,就这么小小的一个字符;把它改正了之后,程序跑的可欢实了!因为是嵌入式系统,所以,一些不规范的写法,或者愚蠢的错误,会导致各种莫名其妙的系统异常,从惨痛教训中,我们才明白了这一点。有时候,程序的写法上稍稍做一下改动就会避免这个问题:
编译上面的程序会报错: 不能给常量赋值!因此,极力推荐这种常量在前的写法,这是防止犯下愚蠢错误的细节!
但是,现实中即使是那些天才程序员也会犯这种极其愚蠢的错误,但愿大家不要在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: }
编译上面的程序会报错: 不能给常量赋值!因此,极力推荐这种常量在前的写法,这是防止犯下愚蠢错误的细节!
相关文章推荐
- 如何使用ASP.NET2.0的“嵌入的资源”
- 使用“. ”来执行shell
- iOS开发系列--打造自己的“美图秀秀”
- 单反相机镜头的“三大纪律,八项注意”
- “不务正业”的一个月
- “客户端响应类型为text/html ;encoding=utf-8”解决方案
- C# 2.0中的 “泛型”的“类型参数”
- “七-七”卢沟桥事变爆发
- “不管什么进程,一旦进入了系统空间,都有相同的页面映射”之解疑
- Comet:基于 HTTP 长连接的“服务器推”技术
- iOS开发系列--让你的应用“动”起来
- RedHat6下,Q5编译时,“GL/gl.h: No such file or directory”
- kerio mailserver 更改主域的后果,未能访问“CDO.Message”对象
- 操作单据报错:“执行请求失败”
- 有点像“高树”<中国…
- Terracotta开发控制台监控远程服务器“Timed-out”的问题
- More about “PartitionKey”&"RowKey” in windows azure table storage
- 关于“指定的参数已超出有效值的范围。参数名 utcDate”的解决方案
- 微软是否会重新担当“救火队员”?
- 如何解决“呈现控件时出错”的问题