C++从零开始学(视频教学版)(第2版)
上QQ阅读APP看书,第一时间看更新

1.4 语言的翻译过程

标准C和C++的编译需要经过多个步骤,但是现在的可视化IDE环境对C++的整个编译过程进行了屏蔽,使得大量初学者只知其然而不知其所以然。

标准C和C++将编译过程定义为9个阶段或步骤,说明如下。


(1)字符映射(Character Mapping)。文件中的物理源字符被映射到源字符集中,其中包括字符运算符的替换、控制字符的替换等。

(2)行合并(Line Splicing)。在字符映射后,进行行合并,以反斜杠“\”结束的行为标志,和它接下来的行合并。

(3)标记化(Tokenization)。在编写C++程序的过程中,需要写各类注释,以增加程序的可读性。每一条注释被一个单独的空字符所替换。C++双字符运算符被识别为标记。源代码被分析成预处理标记。

(4)预处理(Preprocessing)。在对程序进行转换后,就过渡到了重要的预处理。调用预处理指令并扩展宏,使用#include指令包含文件。

重复步骤(1)~(4),直到整个程序处理完。上述4个阶段统称为预处理阶段。

(5)字符集映射(Character-Set Mapping)。对预处理完的程序,将源字符集成员、转义序列转换成等价的执行字符集成员。

(6)字符串连接(String Concatenation)。下一步,将相邻的字符串连接成为一个字符串。

(7)翻译(Translation)。以上各步对文本进行了处理,接下来进行语法和语义分析编译,并翻译成目标代码。

(8)模板处理(Template Processing)。根据在程序中引用的模板进行模板实例的处理。

(9)链接(Linkage)。解决外部引用的问题,链接外部引用实例,准备好程序映像以便执行。