编译前的准备
- 空白字符替换为一个空格(换行符除外)
- 注释替换为一个空格
- 把源代码里面的字符映射到源字符集
- 定位反斜杠,把多个物理行变为一个逻辑行
define宏
- 代码中引用宏的位置,直接用宏定义替换
- 带参数的宏,需要在参数和宏定义表达式外面加上括号
- 宏定义为大写字母,长度为一行
include头文件
- 包含头文件的Include行直接被头文件里的代码替换
- 如果头文件里面有头文件,也用相关的代码替换
- Include和define本质上都是复制粘贴操作
inline内联函数
- 定义: inline 和 static关键字
- 为了减少函数调用的开销,因为函数调用过程中,建立调用,传递参数,跳转代码以及返回结果都会耗费资源
- 和define宏也可以使代码内联
- 内联函数也可能不起作用
- 内联函数应定义在第一次使用的文件中
- 如果多个文件都要使用内联函数,可以把内联函数写在头文件中,在使用该内联函数的文件中包含该头文件
标准库
- 数学库
- 通用工具库
- 断言库
c标准
C标准不仅描述C语言,还描述了组成C语言的软件包、C预处理器和C
标准库。通过预处理器可以控制编译过程、列出要替换的内容、指明要编译的代码行和影响编译器其他方面的行为。C库扩展了C语言的作用范围,为许多编程问题提供现成的解决方案。