c++源码编译过程(翻译阶段)的若干细节概要

c++程序的编译主要包含两个阶段:源码编译(翻译阶段)和目标文件链接。

源码编译过程主要有如下这些阶段:

  阶段1:  翻译源码文本字符
  阶段2:  逻辑源码行标准化处理
  阶段3:  文法处理,分解为不同的源码文本类型序列。例如分解为注释、预处理指令、标识符,以一个空格字符替换每段注释等操作等等。
 阶段4:  执行预处理器,执行所有预处理,并在处理完成后将所有预处理指令从源码中移除
 阶段5:  构造执行字符集
 阶段6: 拼接相邻的字符串字面量
 阶段7: 进行编译:将各个预处理记号转换成记号。将所有记号当作一个翻译单元进行语法和语义分析并进行翻译。
 阶段8: 检验每个翻译单元,产生所要求的模板实例化的列表,其中包括显式实例化所要求的实例化。定位模板定义,并进行所要求的实例化,以产生实例化单元。
 阶段9: 将翻译单元、实例化单元和为满足外部引用所需的库组件汇集成一个程序映像,它含有在它的执行环境中执行所需的信息。可以理解为生成了.obj或者.o文件。

后续就进入链接过程了。

细节请见: Phases of translation - cppreference.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值