banner.gif adie's blog
主页 博客 胭脂泪,相留醉,几时重,自是人生长恨水长东
统计
日志总数: 127
评论总数: 123
日志分类
日志归档
最近日志
最近评论
订阅
rss2.gif

atom.gif

google_rss
yc.gif 【技术评论】 阅读 5515 次

C专家编程笔记(一)

2007-03-09 20:09:27
    [注] 正常字体为书中原文, 斜体为我加的批注

    任何人都可以享受编程,在冗长而乏味的阅读过程中,所有奇妙和乐趣都烟消云散了。如果你硬着头皮把它啃完,或许会有长进。但编程本来不应该是这个样子的呀!
    编程应该是一项精妙绝伦、充满生机、富有挑战的活动,而讲述编程的书籍也应时时逬射出激情的火花。本书也是一本教学性质的书籍,但它希望重新把快乐融入编程中。如果本书不合适你的口味,请把它放回到书架上,但务必放到更显眼的位置上,这里先谢过了。

    ……

    即使你对这些问题已经了如指掌,对 C 语言的其他细节也是耳熟能详,那么也请阅读本书(也请阅读这篇文章),继续充实你的知识。如果觉得不好意思,就告诉书店职员“我是为朋友买书”。

    ……

    if(3 == i) 的技巧虽然可以避免出现 if(i = 3) 这样的错误,但却使程序读起来稀奇古怪,不符合自然语言的习惯。而现代编译器都可以对 if(i = 3) 这种错误发出警告,只要稍加留意即可避免。if(3 == i) 这种技巧已经没多大意义了。

    ……

    整个标准好像是由一位蹩脚的翻译把它从乌尔都语转译成丹麦语,再转译成英语而来。标准委员会似乎自我感觉良好,所以虽然人们希望语言的规则更简单一些,更清楚一些,但他们觉得这样会破坏他们的良好感觉,所以拒不采纳。

    ……

    尽量不要在你的代码中使用无符号类型,以免增加不必要的复杂性。尤其是,不要仅仅因为无符号数不存在负值(如年龄,国债)而用它来表示数量。
    中肯的建议,可惜太多的人都把它忽略了,从 sizeof, size_t 到 std::string::length() ,太多滥用无符号数的地方了。

    ……

    由于它(#pragma 指令)并非 C 语言所固有。pragma 遭到了一个 gcc 编辑器设计者的积极抵制,他把这个“由编译器定义的”的效果做的很搞笑--在 gcc 1.34 版,如果使用了 pragma,将会导致编译器停止编译,并运行一个计算机游戏!在 gcc 手册中有如下说明:
    在 ANSI C 标准中, “#pragma” 指令会产生一个由编译器定义的任意效果。在 GNU C 预处理器中,一旦遇见 “#pragma” 指令,它首先试图运行“rogue”游戏;如果失败,尝试运行“hack”游戏;如果还是失败,它会尝试运行 GNU Emacs,显示汉诺塔。如果仍然失败,它就报告一个致命的错误。总之,预处理过程不会继续下去。

    ……

    在 MS-DOS 中可以动点小脑筋,在程序结束之后检测解引用空指针的情况。在 Microsoft 和 Borland C 中都采用了这方面的办法。具体方法是在进入程序前保存内存地址零的值,在程序结束时,系统检查这个地址值与原先的是否相同。如果不同,基本可以肯定你的程序使用了空指针来访问内存,运行时系统会打印一条“null pointer assignment(空指针赋值)”信息。
    原来这条信息是这样来的!

    

▲评论

X 正在回复:
姓 名: 留下更多信息
性 别:
邮 件:
主 页:
Q Q:
来 自:
职 业:
评 论:
验 证:


Valid HTML 4.01 Strict Valid CSS!
Copyleft.A!die Software Studio.ADSS
Power by webmaster@adintr.com