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

科技分类资讯推荐

最新消息!她已离职!曾凌晨发文道歉 - 天天要闻

最新消息!她已离职!曾凌晨发文道歉

本月初,百度副总裁璩静在短视频平台上发布的几条出镜视频引发网友关注,特别是其提到“员工闹分手提离职我秒批”等职场话题引发网友质疑,一度登上微博热搜。
淘宝取消“618”预售机制后,京东宣布“现货开卖” - 天天要闻

淘宝取消“618”预售机制后,京东宣布“现货开卖”

继5月7日天猫宣布取消“618”预售机制后,5月8日,京东也正式宣布“现货开卖”。今年京东618将于5月31日晚8点全面开启。据了解,现货开卖的同时,京东还将同步推出百亿补贴日活动。在6月2日、6月3日、6月8日,还将先后推出9.
细思极恐网络暴力和群殴 - 天天要闻

细思极恐网络暴力和群殴

互联网高速发展利用时代踏实做事和说实话的人都不被人待见,时时刻刻遭受网络暴力,声讨,群殴,格力电器董明珠,踏踏实实做企业,创税收,促进就业,,为国家为人民奉献大半辈子青春,心血, 汗水,本该退休安享晚年,侍弄儿孙遗憾找不到合适放心接班人,七
探秘vivo影像之美,与X系列技术沟通会共同见证卓越蓝图 - 天天要闻

探秘vivo影像之美,与X系列技术沟通会共同见证卓越蓝图

前段时间的vivo X系列新品发布让我们记忆深刻,而刚刚结束结束的“影像新蓝图X系列技术沟通会”也十分精彩,这次沟通会不仅告诉了大家vivo在影像领域的最新成果,也让粉丝们对vivo影像背后的故事有更多了解,在vivo影像的发展历程中可以分成两方面,一方面,vivo通过自主研发,不断提升自身的影像技术实力,另一方面,vivo...
华为再次亮剑,鸿蒙系统亮点多多 - 天天要闻

华为再次亮剑,鸿蒙系统亮点多多

5月15日,华为夏季全场景新品发布会简直是一场视觉与科技的盛宴,看得我热血沸腾!不得不说,华为这次真的是大招频出,新品多到让人眼花缭乱!先说说那个华为MatePad 11.5 ” S吧,一亮相就让人眼前一亮!它的设计简约而不失时尚,屏幕清晰得让人仿佛置身其中。
【新机】升级了个寂寞?蓝厂新机发布 - 天天要闻

【新机】升级了个寂寞?蓝厂新机发布

昨天晚上蓝厂发布了新机iQOO Neo9s Pro,机子采用了6.78英寸1.5K 8T LTPO直面屏,支持144Hz刷新率。搭载天玑9300+,前置1600万像素,后置IMX920主摄+5000万超广角。电池容量5160mAh,支持120W快充。新增白色版本,用上了白色玻璃后盖,颜值确实提升了不少。不过还是塑料中框+短焦指纹。12+256GB 2699元
AI Agent在哪些行业领域会产生影响? - 天天要闻

AI Agent在哪些行业领域会产生影响?

在如今飞速前进的科技浪潮中,人工智能(AI)技术的创新正以前所未有的速度重塑我们的生活和工作的每一个角落。在这一浪潮中,Agent AI智能体以其卓越的能力脱颖而出,它通过模拟人类智能行为,能够胜任一系列复杂任务,并在多个领域展现出了其无法替代的价值。