woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

C/C++编译过程的9个阶段

标准CC++将编译过程定义为9个阶段(Phases of Translation)

 

1.字符映射(Character Mapping)

    文件中的物理源字符被映射到源字符集中,其中包括三字符运算符的替换、控制字符(行尾的回车换行)的替换。许多非美式键盘不支持基本源字符集中的一些字符,文件中可用三字符来代替这些基本源字符,以??为前导。但如果所用键盘是美式键盘,有些编译器可能不对三字符进行查找和替换,需要增加-trigraphs编译参数。在C++程序中,任何不在基本源字符集中的字符都被它的通用字符名替换。

 

2.行合并(Line Splicing)

    以反斜杠\结束的行和它接下来的行合并。

 

3.标记化(Tokenization)

    每一条注释被一个单独的空字符所替换。C++双字符运算符被识别为标记(为了开发可读性更强的程序,C++为非ASCII码开发者定义了一套双字符运算符集和新的保留字集)。源代码被分析成预处理标记。

 

4.预处理(Preprocessing)

    调用预处理指令并扩展宏。使用#include指令包含的文件,重复步骤14。上述四个阶段统称为预处理阶段。

 

5.字符集映射(Character-set Mapping)

    源字符集成员、转义序列被转换成等价的执行字符集成员。例如:'\a'ASCII环境下会被转换成值为一个字节,值为7

 

6.字符串连接(String Concatenation)

    相邻的字符串被连接。例如:"""hahaha""huohuohuo"将成为"hahahahuohuohuo"

 

7.翻译(Translation)

    进行语法和语义分析编译,并翻译成目标代码。

 

8.处理模板

    处理模板实例。

 

9.连接(Linkage)

    解决外部引用的问题,准备好程序映像以便执行。

posted on 2008-11-08 11:55 肥仔 阅读(2452) 评论(0)  编辑 收藏 引用 所属分类: C++ 基础


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理