C++的编译过程,预处理指令

C++的编译过程
1)编译 :把源代码翻译成机器语言,形成目标文件
1.1)先进行编译预处理
预处理又称为预编译,是做些代码文本替换工作。
编译器执行预处理指令(以#开头,例如#include)替换成其包含的文件代码。
这个过程会得到不包含#指令的.i文件。
1.2)编译优化

这阶段要做的工作主要是,通过语法分析和词法分析,确定所有指令是否符合规则,之后翻译成汇编代码。

这个过程将.i文件转化位.s文件。

1.3) 汇编

把汇编语言翻译成目标机器指令的过程,生成目标文件(.obj .o等)。
目标文件中存放的也就是与源程序等效的目标的机器语言代码。

目标文件由段组成,通常至少有两个段:

代码段:包换主要程序的指令。该段是可读和可执行的,一般不可写

数据段:存放程序用到的全局变量或静态数据。可读、可写、可执行。

这个过程将.s文件转化成.o文件。

2)连接 :把目标文件操作系统的启动代码和库文件组织起来形成可执行程序

由汇编程序生成的目标文件并不能立即就执行,还要通过链接过程。

原因:
1).某个源文件调用了另一个源文件中的函数或常量

2).在程序中调用了某个库文件中的函数

链接程序的主要工作就是将有关的目标文件连接起来。

这个过程将.o文件转化成可执行的文件。

总结:源代码-》替换预处理指令-》汇编代码-》机器语言代码-》连接

预处理指令
1,文件包含:#include
2,宏替换:#define
3,条件编译指令:#if,#ifdef,#ifndef,#else,#error,#pragma
详细

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值