【C-Primer-Plus读书笔记】第16章:C预处理器和C库
翻译程序的第一步
在预处理之前,编译器必须对该程序进行一些翻译处理:
- 编译器把源代码中出现的字符映射到源字符集;
- 编译器定位每个反斜杠后面跟着换行符到实例,并删除它们(即把代码中本是一行但写了两行的语句转换成一行,常见于在一行字符串中插入反斜杠后跟着按下回车键形成的两行代码。即两个物理行转换成一个逻辑行,预处理表达式的长度必须是一个逻辑行);
- 编译器把文本划分成预处理记号序列、空白序列和注释序列(记号是由空格、制表符或换行符分割的项),这里需要注意的是,编译器将用一个空格字符替代每一条注释;
- 程序已经准备好进入预处理阶段,预处理器查找一行中以
#
号开始的预处理指令。
明示常量:#define
- 预处理器指令从
#
开始运行,到后面的第一个换行符为止。也就是说,指令的长度仅限于一行。 每行
#define
(逻辑行)都由3部分组成:- 第1部分是
#define
指令本身; - 第2部分是选定的缩写,也称为宏。有些宏代表值,这些宏被称为类对象宏;
- 第3部分(指令行的其余部分)称为替换列表或替换体。
- 第1部分是