1。为什么使用库文件



在实际的编程中,我们肯定会遇到这种情况:在几个项目中,有几个功能模块具有相同的功能,



实现代码是相同的,我们称之为重复代码,例如,许多项目都有用户验证功能。



代码部分如下所示:



/ /用户登录。h文件,提供函数声明



Int IsValidUser(char *用户名,int namelen);



/ /用户登录。C文件来验证用户信息



Int IsValidUser(char *用户名,int namelen)



{



Int IsValid = 0;



下面是具体的处理代码



返回的有效性



}



如果每个项目是由这两个用户登录保存。H和UserLogin。C文件,将有几个



事故:



1,每个项目都有一个重复的模块,导致代码重复。



2、代码的可重用性不好,一旦isvaliduser代码更改,以保持设计的一致性,



我们还必须手动修改UserLogin。在其他项目中的C文件,既费时费力又容易出错。



库文件是公共代码的组织。



为了解决上述两个缺点,本文提出了一种利用库文件存储公共代码的方案。要点是



将目标代码与项目分开,并将其存储在库文件中。



使用此代码时,可以在编译或运行库文件时从库文件中获得目标代码。



它分为两类:静态库和动态库。



二、静态库和动态库



如果在编译时加载程序加载库文件,则使用静态库,



换句话说,如果使用静态库,静态库代码在编译时被复制到程序的代码段。



程序的容量扩展了。如果使用动态库,程序中只保留库文件的名称和函数名,并在运行时找到它。



程序的体积在库文件和函数体的大小上几乎没有变化。



静态库的原理是在时间上空间,增加程序的体积,减少运行时间;



动态库是它及时改变了空间,增加了运行时间,但减少了程序本身的体积。



让我们看看如何在实际例子中使用这两个库。



三。静态库的编写与使用



1。概述



静态库文件的扩展通常是A,其编写步骤很简单。



写函数代码



编译器生成目标文件。



使用AR文件归档的目标,生成一个静态库文件。



注意,存档的文件名必须由库头负责。



使用要点:



静态库头文件中的i参数GCC中的路径。



GCC库文件中的L参数和目录



在L参数GCC中使用数据库文件名,但要删除库和扩展名。



例如,库文件的名字是libtest。然后参数-测试



2。编写最简单的静态库文件



编写以下两个文件并注意同一目录



myalib。H / /静态库的头



Myalib。C / /静态库文件



的 / / myalib h文件的内容。



空洞测试();



的 / / myalib C文件的内容。



#是



空洞测试()



{



printf(检验);



}