从网景公司那个首席黑客口中,我终于知道了还有这本书,这本书老实说,比我看到的所有C语言书都新颖和独特,一看就知道是大牛(微软首席架构师)写的书
谭浩强之辈该学习学习了
以下是这本书我写的读书笔记,望有兴趣的读者读后可以跟我共同分享下书中的精彩世界
P87:
p88;
p100; c语言某些情况下,能不使用指针的就不使用指针吧;
P101
P116 断言让程序员更加诚实
P130:灵活性滋生错误性;
p152:习题答案;
165
重视编译器的所有警告选项,让编译器为你查找错误;
P17:增强函数原型的能力;重视变量的数据类型,为变量写详细具体的数据类型
这样编译器会根据函数原型产生警告选项,达到纠错的目的;
第一章:告诉你重新认识编译器,尽量让编译器帮你纠正尽可能多的错误;
第二章:
P24;ANSI C中的memcpy函数中有一个行为是无定义的,表明这个地方容易出错,需谨慎处理
P26:断言是检查非法的情况,而不是检查真正的错误;第二个真正的错误是指在最终产品中肯定会出现并且必须对其处理的错误;断言通常在debug版本中有效,在release版本中就会被去除掉;
还有靠断言找出的错误是可以纠正,重编码来避免此类错误的,但是真正的错误是怎么纠正啊,根本不能纠正的,如内存分配失败时,系统就算交付给客户运行时也有可能内存分配失败;
P31:断言也可以当对程序的注解使用,增强程序健壮方面的可读性;
P33:使用防御性编程时,断言是告诉程序维护者使用防御性编程主要防范什么的;
P34的程序中使用断言是很有用的,因为可以告诉维护者内存被破坏了,内存越界了;
但不使用断言的话,就达不到这个目的;
P41:使用断言是为了捕捉不应该发生的错误情况;
一般教科书鼓励程序员进行防御性编程,但要记住这种编码风格会隐瞒错误,当进行防错性编码时,如果不可能发生的情况的确发生了,要使用断言报警;
P153;这个ASSERT宏有个最大的优势是可以使该ASSERT宏用在表达式里时编译器就报错;
79:良好的设计函数的接口,为调用该函数的人减轻负担;
第五章:
P86:在缺省状态下,用户并不知道是具有有符号的位域还是无符号的位域
这是对这一页上面的那个小程序的总结;
P87:注意char型变量和“<”操作符之间的关系;比较字符时,就要声明为unsinged char*这样更详细些,要声明更为详细地数据类型;
P88:有时程序出错(上溢或下溢),发现这样的BUG,就要关注你设定的具体变量类型有没有上限值,是否达到了这些上限值;
P91:这个程序中的断言是为了排除混乱,告诉读者这个函数的执行意图;
p100; c语言某些情况下,能不使用指针的就不使用指针吧;使用计数器控制遍历范围要比指针稍微好些;使用指针遍历范围的危害性,pch变量本身会不会溢出啊;
P101:能使用除法的,不要使用移位,
第六章:
P122:习题3)可以看出C语言编程的灵活性,呵呵,灵活性会滋生BUG的;
P130 微软的人写书就是不一样,好像否定了自由黑客主义;写代码要考虑到产品发布和工程进度。写代码也要像微软那样商业化,产品化;