更多课程 选择中心

C/C++培训
达内IT学院

400-111-8989

C++是怎么编译的?C++的编译过程

  • 发布:C++培训
  • 来源:C++资讯
  • 时间:2020-11-27 15:29

C++ 编译过程到底是如何发生的。C++ 的整个编译过程包含多项操作,主要可分为四个阶段,分别是编译预处理、编译优化阶段、汇编过程、链接过程;下面一起详细来看一下:

这四个阶段按顺序执行,每一个阶段分别处理上一个阶段的输出代码,并输入下一个阶段。每个阶段的作用分别为:

1、 编译预处理

读取 C++ 源代码,对其中的伪指令和特殊符号进行处理。这个预处理实际上可看作是将源程序中的一些特殊指令或者符号进行替换。经过预处理的替换,就会生成一个没有特殊指令、没有特殊符号的输出文件。这个文件的含义和源文件本质上是相同的,但内容和表达方式有所不同。

特殊指令:称为伪指令,包括宏定义指令、条件编译指令、头文件包含指令。比如上述 C++ 代码中第一行的 #include 就是头文件包含指令,会在编译预处理阶段被替换。

2、编译优化阶段

经过预编译后的输出文件会经过编译优化阶段,将原始代码转化为汇编语言。这个阶段是整个编译过程的核心,也是起到 “ 翻译 ” 作用的关键。整个阶段的工作过程一般可分为六个步骤:

1.词法分析

2.语法分析

3.语义分析

4.中间代码生成

5.代码优化

6.目标代码生成

在进行编译时,会经过词法分析、语法分析和语义分析将高级语言代码一步步分解剖析,按照定义的语法将不同的代码语句拆解,并根据一些标准来对代码语句进行分析检查,最后生成中间形式的代码用于优化。而优化步骤则是对中间代码进行优化改进,力图提升生成的汇编代码的效率。

3、汇编过程

汇编语言可看做是一种低级语言,十分接近于机器码的实现。

汇编语言:用于硬件底层编程的低级语言,常用助记符代替机器指令,用地址符号或标号代替指令或操作数的地址。特定的汇编语言和特定的机器语言指令集一一对应,通过汇编过程转换成机器指令。

由此可见,汇编过程实际上就是将汇编语言翻译成为了机器码,这些机器码就是 C++ 源代码的底层表达,理论上计算机可以通过执行这些机器码来实现对源代码的运行。

4、链接过程

但是要知道,一个普通的高级语言程序,都不单单只包含一个文件。可能某个源文件就会调用其它库文件中的函数或者其它源文件中定义的符号函数等。因此多个文件在经过编译汇编之后,还需要通过链接过程将不同的目标文件连接起来,建立起引用和调用的联系。直至这步完成之后,程序语言代码才能够真正意义上的被计算机理解和运行。

反复思索 C++ 编译的整个过程,大家是不是觉得这几行简洁的代码仿佛经过了千锤百炼一般,虽然最终似乎面目全非,但是却变成了最原始最纯洁的样子。整个编译过程的环环相扣以及精巧绝伦,同时这也正是大家对编译阶段的原理产生了更大的兴趣的原因之一。

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:985硕士出来嵌入式驱动开发工资能到多少?
下一篇:C++编译期多态与运行期多态

C语言宏定义的几种使用方法

C与C++内存管理避坑指南

C/C++代码规范注释有哪些讲究?

C语言中,全局变量滥用的后果竟如此严重?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省