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

科技分类资讯推荐

“苹果税”引发电商平台数字商品下架,用户低价购买权受损 - 天天要闻

“苹果税”引发电商平台数字商品下架,用户低价购买权受损

2024年“618”电商大促期间,有用户发现,在短视频、支付、电商等平台,视频、网盘等会员类商品无法使用苹果手机进行购买,甚至在主播还在讲解商品时,苹果ios端的商品链接瞬间消失。记者发现,在爱奇艺官方旗舰店、优酷官方旗舰店、腾讯视频官方旗舰店、百度网盘官方旗舰店、喜马拉雅FM等直播间内,都赫然用醒目的字体标注...
多次更新让系统更好用,OPPO Find X7 Ultra性价比超高 - 天天要闻

多次更新让系统更好用,OPPO Find X7 Ultra性价比超高

最近 OPPO Find X7 Ultra 的系统更新可以说是非常频繁,最重磅的相信就是 4 月份升级的全新动效了,无论是解锁动效还是打断动效,都有流畅丝滑的体验,这也不多不少挽回了 ColorOS 的口碑。除了全新的流畅动效,OPPO Find X7 Ultra 的通知控制中心也有全新升级,相比更新前更有层次感,操作也更高效。影像上 OPPO Find X
不一样的角度看处理器,原来它们这么香! - 天天要闻

不一样的角度看处理器,原来它们这么香!

CPU性能直接影响着计算机的整体运行表现,因此选购合适的CPU至关重要。虽然英特尔酷睿i5 12600KF因其出色的性能和较高性价比而风头正劲,但事实上,还有一些不太为人所知的CPU同样值得关注。
对中企不再友好!ASML高管公开呛声,准备向美国靠拢了? - 天天要闻

对中企不再友好!ASML高管公开呛声,准备向美国靠拢了?

对中企不再友好!ASML高管公开呛声,准备向美国靠拢了?为了更好的抓住中国市场订单,ASML CEO温宁克以及荷兰高层马克·吕特接连的访华,让我们放心将光刻机订单交付给他们,然而这波热度还没过去,他们对中国市场的态度已经发生天翻地覆的变化。
问界新M7 Ultra陕西交付,亲子同游享豪华驾乘 - 天天要闻

问界新M7 Ultra陕西交付,亲子同游享豪华驾乘

6月10日端午节当天,西安市灞桥区白鹿原嗨King野奢营地,问界新M7 Ultra 陕西首批集中交付仪式在此举行。伴随着节假日休闲舒适的氛围,众多鸿蒙智行车友齐聚在此,共同分享首提车主的喜悦时刻。
专访陈高旭|睿蓝汽车可充可换可增程,更灵活更自由! - 天天要闻

专访陈高旭|睿蓝汽车可充可换可增程,更灵活更自由!

本届重庆车展上,睿蓝汽车携睿蓝9创始版,睿蓝7猎光Max激光雷达版、605荣耀版、450荣耀版亮相,一展睿蓝汽车的推新速度和产品风采。其中,于此次车展上市的睿蓝7 450荣耀版备受大家关注,其以11.77万元的价格,近一步拉低了睿蓝7的入门价格。
三星展示旗下首款彩色电子纸显示屏,显示内容几乎不耗电 - 天天要闻

三星展示旗下首款彩色电子纸显示屏,显示内容几乎不耗电

IT之家 6 月 12 日消息,在正在美国拉斯维加斯举办的 Infocomm 2024 展会上,三星首次展示了其彩色电子纸显示屏。该产品目前为原型机,采用彩色电子墨水屏技术,主要用于广告展示。这块彩色电子纸显示屏适用于商场、办公室、公共场所、餐厅、零售店等各种场景,可用于展示广告、菜单、商品信息等内容。型号为 EMDX 的这块 ...