摘要:本文主要总结自己看完《C陷阱与缺陷》这本书后的感想。
阅读全文
摘要:本文主要讲解《C陷阱与缺陷》第六章中宏的使用。
预处理器工作有:
(1) 文件包含:可以把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处。
(2) 条件编译:预处理器根据#if和#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外。
(3) 宏展开:预处理器将源程序文件中出现的对宏的引用展开成相应的宏定义。
预处理中宏的作用:
(1)方便程序的修正:将某个特定数量在程序中出现的所有实例统统加以修改;
(2)提高程序的运行效率:C语言在实现函数调用时会带来重大系统开销,宏可以实现一种这样的程序块:它看上去像函数,但却没有函数调用的开销。
阅读全文
摘要:本文主要记录《C陷阱与缺陷》第三章中的一些知识。
阅读全文
摘要:问题:当计算机启动时,硬件将调用首地址为0的子例程,为了模拟开机启动时的情形,如何设计出一个C语句,以显示调用该子例程。
换个问法:有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做?
《C陷阱与缺陷》给出答案:(*(void(*)())0)();
阅读全文
摘要:这篇文章主要讲的是《C陷阱与缺陷》中第一章习题1-3与1-4。
习题1-3:为什么n-->0的含义是n-- > 0,而不是n- -> 0 ?
习题1-4:a+++++b的含义是什么?
阅读全文
摘要:本博客详细解释:《C陷阱与缺陷》课后习题1-1,题目:
某些C编译器允许嵌套注释。请写一个测试程序,要求:无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译,但是这两种情况下程序执行的结果却不同。
阅读全文