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语言的编译器工作原理 - 天天要闻

科技分类资讯推荐

百年码头“转身”数字高地 陆家嘴数智港揭牌 打造互联网经济新引擎 - 天天要闻

百年码头“转身”数字高地 陆家嘴数智港揭牌 打造互联网经济新引擎

IT时报记者 郝俊慧沿浦东滨江大道北行,行至浦江下游,抬眼便见杨浦大桥横卧江面连接两岸。这里,曾是上海百年码头的繁忙之地,如今正蜕变为互联网经济产业高地。6月16日,陆家嘴数智港正式揭牌成立。这一战略性平台的设立,是积极落实浦东新区今年2月发布的《关于促进互联网平台经济健康发展的若干意见》的关键举措,由陆...
来自硅谷的AI写作黑科技LingoLeap有哪些强大功能? - 天天要闻

来自硅谷的AI写作黑科技LingoLeap有哪些强大功能?

在托福、雅思备考圈中,一款名为 Lingoleap 的AI写作与口语批改工具正被越来越多考生使用,因其“逐句点评、高分改写、反馈及时”而被用户称为“AI写作老师”。记者近日采访发现,该工具正在留学培训机构、高校考生和自学群体中悄然流行,并受到“AI+教育”政策背景的进一步推动。 南京某高校学生小孙分享说,Lingoleap让她...
电商刷单查实!“10.5万+”爆款是假的 - 天天要闻

电商刷单查实!“10.5万+”爆款是假的

“已抢10.5万+件”在某电商平台商品展示页面一款领夹麦克风正在“疯抢中”然而商品评价只有404条数据异常悬殊背后究竟藏着怎样的猫腻?(图片来源:海淀区市场监管局)近日北京市海淀区市场监管局披露了一起网络经营者虚构交易量的违法案件记者了解到,为获取真实交易数据,执法人员向电商平台所在地市场监管部门发函协查,...
有关部门回应多地“国补”暂停;蜂鸟音乐要求邓紫棋重制版歌曲全网下架;791名中国公民安全撤离伊朗;央行将在上海设立个人征信机构 - 天天要闻

有关部门回应多地“国补”暂停;蜂鸟音乐要求邓紫棋重制版歌曲全网下架;791名中国公民安全撤离伊朗;央行将在上海设立个人征信机构

特别关注有关部门回应多地“国补”暂停近期,多地传出以旧换新“国补”暂停或者调整的消息。对此,国家相关主管部门就“国补”下一步计划回应称,今年国家安排3000亿元超长期特别国债资金支持消费品以旧换新,目前已向地方下达了共计1620亿元资金,剩余资金将有序下达。2025年的消费品以旧换新政策将全年实施,有关部门正指...
吉利第四代博越L,为何成爆款?底盘、动力、智能全面解析 - 天天要闻

吉利第四代博越L,为何成爆款?底盘、动力、智能全面解析

随着新能源车型的崛起,燃油车型看似热度不再,其实留意销量排行榜,就会发现一些经典的燃油车依旧长期位居前列,近期上市的第四代博越L无疑是其中之一。博越作为200万用户的选择,新一代车型上市后迅速登上热搜,引起热议,这款车究竟有何魔力?我们通过底盘、动力、空间、智
快递服务质效持续提升 - 天天要闻

快递服务质效持续提升

工人在河北省固安县申通快递华北转运中心工作。 新华社记者 王 晓摄国家邮政局数据显示,今年1月至5月,我国快递业务量累计完成787.7亿件,同比增长20.1%。市场规模实现较快增长的同时,快递服务质效也持续提升。眼下,正值荔枝、水蜜桃等时令鲜果上市,快递企业综合发力提升时效。在广东省茂名市荔枝主产区,中通快递设置...