CC++头文件和库文件的区别和联系是什么?

CC++头文件和库文件的区别和联系是什么?,第1张

文件中有函数的申明,库文件实现函数的定义。

比如,printf函数。使用时应包括stdio.h,打开stdio.h你只能看到,printf这个函数的申明,却看不到printf具体是怎么实现的,而函数的实现在相应的C库中。

而库文件一般是以二进制形式而不是C源文件形式提供给用户使用的。

程序中包括了stdio.h这个头文件。链接器就能根据头件中的信息找到printf这个函数的实现并链接进这个程序代码段里。

总结起来就是,库文件通过头文件向外导出接口。用户通过头文件找到库文件中函数实现的代码从而把这段代码链接到用户程序中去。

首先纠正一下,编译器并不通过头文件找源文件,头文件里只有声明,include是在预处理阶段,就是直接把头文件代码粘贴到你写的.c文件中,接下来编译器编译生成目标文件,你说的库文件我的理解应该是头文件对应的源文件吧,这个过程其实是发生在链接阶段,头文件对应的源文件早就编译成目标文件做成静态链接库或者动态链接库,和你写的目标文件一起链接成可执行程序

第二个问题 为什么用头文件做中介

前面已经说过头文件里只有声明,试想一下如果不用头文件,声明和定义都放在一个文件中,那么你去include库文件的时候他会把里面所有的函数声明和函数原型都包含进来,一个库文件中可能包含几十个函数,而这些函数你可能只用到其中的一两个,一个函数有可能几百行代码,这样你的.c文件不是额外多了好几千行代码


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12102079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存