第21章预处理2.宏定义较大的项目都会用大量的宏定义来组织代码,你可以看看/usr/include下面的头文件中用了多少个宏定义。看起来宏展开就是做个替换而已,其实里面有比较复杂的规则,C语言有很多复杂但不常用的语法规则本书并不涉及,但有关宏展开的语法规则本节却力图做全面讲解,因为它很重要也很常用。2.1.函数式宏定义以前我们用过的#defineN20或#defineSTRhello,world这种宏定义可以称为变量式宏定义(Object-likeMacro)...
第20章链接详解2.定义和声明2.1.extern和static关键字在上一节我们把两个程序文件放在一起编译链接,main.c用到的函数push、pop和is_empty由stack.c提供,其实有一点小问题,我们用-Wall选项编译main.c可以看到:$gcc-cmain.c-Wallmain.c:Infunction‘main’:main.c:8:warning:implicitdeclarationoffunction‘push’main.c:12:warning:implicitdeclarationoffunction‘is_empty’main.c:13:warning:implicitdeclarationoffunct...