##### C.预处理器
- 预处理器
- C 预处理器在程序编译之前查看程序, 根据程序中的预处理器指令, 把符号缩写替换成其表示的内容. 预处理器可以包含程序所需的其他文件, 可以选择让编译器查看哪些代码. 预处理器并不知道 C . 基本上它的工作是把一些文本转换成另外一些文本
- 在执行指令前, 会首先对代码做一些格式化, 例如把多行物理行处理为一行逻辑行, 用一个空格字符替换每一条注释等
- 预处理器指令
- 预处理器指令从 `#` 开始运行, 到后面的第1个换行符为止, 指令的长度仅限于一行
- 文件包含指令 [[C.include|include]]
- 宏定义指令 [[C.define|define]] [[C.undef|undef]]
- 条件编译指令
- 代码优化指令
- 其他预处理指令
- 预处理器宏
- C 标准规定了一些预定义宏, 宏是一段已命名的代码片段, 每当使用该名称时, 它都会被宏的内容替换
- `__DATE__` 当前日期,一个以 "MMM DD YYYY" 格式表示的字符常量
- `__TIME__` 当前时间,一个以 "HH:MM:SS" 格式表示的字符常量
- `__FILE__` 这会包含当前文件名,一个字符串常量
- `__LINE__` 这会包含当前行号,一个十进制常量
- `__STDC__` 当编译器以 ANSI 标准编译时,则定义为 1