C语言中史上最愚蠢的Bug
2015-03-26 19:37
218 查看
C语言中史上最愚蠢的Bug
2011年8月26日陈皓发表评论阅读评论 38,650 人阅读
本文来自“The most stupid C bug ever”,很有意思,分享给大家。我相信这样的bug,就算你是高手你也会犯的。你来看看作者犯的这个Bug吧。。
首先,作者想用一段程序来创建一个文件,如果有文件名的话,就创建真正的文件,如果没有的话,就调用?tmpfile()?创建临时文件。他这段程序就是HTTP下载的C程序。code==200就是HTTP的返回码。
于是作者就先把这个问题记下来,在注释中写下了FIXME:
现在我们把所有的代码连在一起看,并比较一下:
能正常工作的代码
而之所以改成if-else能工作的原因是因为作者注释了老的问号表达式的代码,所以,那段能工作的代码成了:
最后,我也share一个我以前犯的一个错。
我有一个小函数,需要传入一个int* pInt的类型,然后我需要在我的代码里 把这个int* pInt作除数。于是我的代码成了下面的这个样子:
float result = num/*pInt;
….
/* some comments */
-x<10 ? f(result):f(-result);
因为我在我当时用vi编写代码,所以没有语法高亮,而我的程序都编译通过了,但是却出现了很奇怪的事。我也不知道,用gdb调式的时候,发现有些语句直接就过了。这个问题让我花了很多时间,最后发现问题原来是没有空格导致的,TNND,下面我用代码高亮的插件来显示上面的代码,
(全文完)
相关文章推荐
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- 标 题: C语言中史上最愚蠢的Bug(zz)
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug(zz)
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- C语言中史上最愚蠢的Bug
- 关于C语言的部分BUG
- C语言-条件编译调试Bug
- C语言-用了一下午三小时查找出来的bug_报段错误 (核心已转储)
- [转] Linux C语言 段错误bug的调试
- 调试了一上午的愚蠢BUG