C/C+编程笔记:C语言的编译器工作原理

2020年12月07日23:40:10 科技 1738

以gcc编译器为例子,编译实际上总共经历了四个阶段

预处理--->编译--->汇编--->链接

C/C+编程笔记:C语言的编译器工作原理 - 天天要闻

1.预处理阶段:编译器以cpp文件作为一个单元,首先读这个cpp文件,发现第一句与第二句包含一个头文件,就会在所有搜索路径中寻找这两个头文件,找到之后,就会到相应头文件中再去处理宏、变量、函数声明、嵌套的头文件等。

检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的cpp文件中,形成一个中间"cpp文件"。

在这一步中相当于将那个头文件中的test变量扫描进了一个中间cpp文件,那么test变量就变成了这个文件中的一个全局变量。在stdio.h这个头文件中有一些函数的声明,这时也把这些函数的声明一股脑的扫描到了这个中间cpp文件中(只是扫描了函数的声明,并没有实现)。

C/C+编程笔记:C语言的编译器工作原理 - 天天要闻

2.编译阶段:此时就为这个中间cpp文件的所有变量、函数形参分配空间(原则上,在这里只能看到.h文件中函数、变量的声明,为变量和函数的形参等分配空间),将各个函数编译成二进制码,按照特定目标文件格式生成目标文件。

在这种格式的目标文件中进行各个全局变量、函数的符号描述(编译器维护一个符号描述表),将这些二进制码按照一定的标准组织成一个目标文件。

C/C+编程笔记:C语言的编译器工作原理 - 天天要闻

此时的每一个cpp文件都被编译器编译成了一个目标文件,同时每个目标文件都有一张符号表,这张符号表中记录了这个cpp文件都用到了哪些变量,哪些函数,函数的参数是什么类型的,有几个参数。

同时为变量和函数形参开辟了内存空间。所以这里编译器把你这个cpp用到的所有的东西都记录下来了,如果有重复定义或者没有定义的变量、函数等,编译器一下子就知道了。

3.连接阶段:将上一步成生的各个目标文件,根据一些参数,连接生成最终的可执行文件,主要的工作就是重定位各个目标文件的函数、变量等,相当于将个目标文件中的二进制码按一定的规范合到一个文件中。

C/C+编程笔记:C语言的编译器工作原理 - 天天要闻

科技分类资讯推荐

董明珠称孟羽童离开格力是因为“犯了很大错误” | 大鱼财经 - 天天要闻

董明珠称孟羽童离开格力是因为“犯了很大错误” | 大鱼财经

5月20日,孟羽童贴出与董明珠对话称,“时隔两年,收到了来自前老板的微信,像是心中的一块大石头终于落了地,心中是莫名的酸楚和感谢。”格力电器发文称:“520这天,爱是有回应的。这个周五,欢迎回家吃饭。猜猜董总要跟谁吃饭。”5月23日当天,格
小米发布搭载3纳米自研芯片旗舰产品 - 天天要闻

小米发布搭载3纳米自研芯片旗舰产品

5月22日晚,中国科技界传来喜讯:我国科技企业小米在京正式发布自研3纳米手机SoC芯片,被命名为“玄戒O1”,这是中国大陆地区首次研发设计出3纳米芯片。芯片是“现代工业粮食”,其制程工艺的先进性,是近年来全球科技竞逐的焦点。制程工艺数值越低,意味着晶体管集成度越高、性能越强。“手机SoC芯片是系统级芯片,集成CP...
中国医药3亿关联收购金穗科技:转型电商的豪赌 - 天天要闻

中国医药3亿关联收购金穗科技:转型电商的豪赌

中经记者 苏浩 卢志坤 北京报道(中国医药3.02亿元收购关联公司 公司公告/图)近期,中国医药(600056.SH)拟以现金3.02亿元收购控股股东通用技术集团旗下全资子公司新兴集团持有的北京金穗科技开发有限责任公司100%股权。中国医药方面表示,如完成本次收购,金穗科技将成为中国医药全资子公司,将围绕中国医药总体发展战略...
QQ浏览器发布“AI高考通”,可一键生成个性化志愿方案 - 天天要闻

QQ浏览器发布“AI高考通”,可一键生成个性化志愿方案

随着2025年高考临近,腾讯旗下QQ浏览器于5月23日发布行业首个高考领域智能体(Agent)产品——“AI高考通”。该产品依托腾讯混元大模型技术,深度整合高考全流程服务,打造从备考到志愿填报的一站式智能解决方案,开创“AI+教育”服务新模式。 作为连续7年服务高考的平台,QQ浏览器已累计为4亿人次提供高考服务,构建了包含...
全球首创!这款京产髋关节手术机器人获批上市 - 天天要闻

全球首创!这款京产髋关节手术机器人获批上市

一款诞生在北京的手术机器人正在破解髋关节置换手术的诸多难题。记者23日从北京企业长木谷获悉,由其自主研发的“ROPAHIP”人工智能髋关节手术机器人已获国家药品监督管理局的上市批准。这款手术机器人是全球首创搭载人工智能辅助骨科治疗的创新医疗器械,为全球骨科治疗贡献了“中国方案”。骨关节炎是全球致残率最高的慢...
拧紧机器人研发商“顶配机器人”完成数千万元种子轮融资 - 天天要闻

拧紧机器人研发商“顶配机器人”完成数千万元种子轮融资

机器人大讲堂获悉,拧紧机器人研发商“SLABOR顶配机器人”近日成功完成种子轮融资。该轮融资由梅花创投独家投资,融资金额总计达数千万元,将主要用于SLABOR顶配机器人技术迭代、产品系列完善及渠道市场拓展。 据机器人大讲堂了解,SLABOR顶配机器人(全称:深圳市顶配自动化技术有限公司)成立于2016年,是一家扎根于螺丝...
个人信息防泄露,认证方式权威!“国家网络身份认证”来了 - 天天要闻

个人信息防泄露,认证方式权威!“国家网络身份认证”来了

个人身份信息被非法采集,数字经济缺乏可信数字身份作为支撑,互联网平台难以找到权威、可靠、便捷的公民身份认证方式……基于个人真实身份信息的认证服务需求爆发式增长,虽然部分满足网络空间办理业务的信任基础,但也引发新的问题。公安部、国家互联网信息办公室等六部门近日联合公布《国家网络身份认证公共服务管理办法...