翻译阶段
在 §5.1.1.2 翻译阶段中列出的 C 2011 标准中,源代码到程序映像(例如,可执行文件)的转换被列为以 8 个有序步骤发生。
- 源文件输入映射到源字符集(如果需要)。在此步骤中替换 Trigraph。
- 延续线(以
\
结尾的线)与下一行拼接。 - 源代码被解析为空格和预处理标记。
- 应用预处理器,它执行指令,扩展宏并应用编译指示。由
#include
引入的每个源文件经历翻译阶段 1 到 4(如果需要,递归地)。然后删除所有与预处理器相关的指令。 - 字符常量和字符串文字中的源字符集值映射到执行字符集。
- 彼此相邻的字符串文字是连接在一起的。
- 源代码被解析为令牌,其包括翻译单元。
- 解析外部参考,并形成程序图像。
C 编译器的实现可以将几个步骤组合在一起,但是得到的图像仍然必须表现得好像上面的步骤是按照上面列出的顺序单独发生的。