“C语言”“ 库文件”与“头文件”有什么区别?

“C语言”“ 库文件”与“头文件”有什么区别?,第1张

简单来说:库文件通过头文件向外导出接口。用户通过头文件找到库文件中\x0d\x0a\x0d\x0a头文件中有函数的申明,库文件实现函数的定义。\x0d\x0a\x0d\x0a比如,printf函数。使用时应包括stdio.h,打开stdio.h你只能看到,printf这\x0d\x0a\x0d\x0a个函数的申明,却看不到printf具体是怎么实现的,而函数的实现在相应的C库\x0d\x0a\x0d\x0a中。而库文件一般是以二进制形式而不是C源文件形式提供给用户使用的。程序\x0d\x0a\x0d\x0a中包括了stdio.h这个头文件。链接器就能根据头件中的信息找到printf这个函\x0d\x0a\x0d\x0a数的实现并链接进这个程序代码段里。\x0d\x0a函数实现的代码从而把这段代码链接到用户程序中去。

下面给出Turbo C的全部".h"文件。Turbo C头文件:

头文件

说明

alloc.h说明内存管理函数(分配、释放等)。

assert.h定义 assert调试宏。

bios.h说明调用IBM—PC ROM BIOS子程序的各个函数。

conio.h说明调用DOS控制台I/O子程序的各个函数。

ctype.h包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。

dir.h包含有关目录和路径的结构、宏定义和函数。

dos.h定义和说明MSDOS和8086调用的一些常量和函数。

error.h定义错误代码的助记符。

fcntl.h定义在与open库子程序连接时的符号常量。

float.h包含有关浮点运算的一些参数和函数。

graphics.h说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的一些特殊结构。

io.h包含低级I/O子程序的结构和说明。

limit.h包含各环境参数、编译时间限制、数的范围等信息。

math.h说明数学运算函数,还定了 HUGE VAL 宏, 说明了matherr和matherr子程序用到的特殊结构。

mem.h说明一些内存 *** 作函数(其中大多数也在STRING.H中说明)。

process.h说明进程管理的各个函数,spawn…和EXEC …函数的结构说明。

setjmp.h定义longjmp和setjmp函数用到的jmp buf类型,说明这两个函数。

share.h定义文件共享函数的参数。

signal.h定义SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,说明rajse和signal两个函数。

stddef.h定义读函数参数表的宏。(如vprintf,vscarf函数)。

stddef.h定义一些公共数据类型和宏。

stdio.h定义Kernighan和Ritchie在Unix System V 中定义的标准和扩展的类型和宏。还定义标准I/O 预定义流:stdin,stdout和stderr,说明 I/O流子程序。

stdlib.h 说明一些常用的子程序:转换子程序、搜索/ 排序子程序等。

string.h说明一些串 *** 作和内存 *** 作函数。

sys\stat.h定义在打开和创建文件时用到的一些符号常量。

sys\types.h说明ftime函数和timeb结构。

sys\time.h定义时间的类型time[ZZ(Z] [ZZ)]t。

time.h定义时间转换子程序asctime、localtime和gmtime的结构,ctime、 difftime、 gmtime、 localtime和stime用到的类型,并提供这些函数的原型。

value.h定义一些重要常量,包括依赖于机器硬件的和为与Unix System V相兼容而说明的一些常量,包括浮点和双精度值的范围。C系统提供了丰富的系统文件,称为库文件。C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件,在前面的包含命令中我们已多次使用过。在".h"文件中包含了常量定义、 类型定义、宏定义、函数原型以及各种编译选择设置等信息。另一类是函数库,包括了各种函数的目标代码,供用户在程序中调用。通常在程序中调用一个库函数时,要在调用之前包含该函数原型所在的".h" 文件。

之所以成为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。

试想一下,静态库与汇编生成的目标文件一起链接为可执行文件,那么静态库必定跟.o文件格式相似。其实一个静态库可以简单看成是一组目标文件(.o/.obj文件)的集合,即很多目标文件经过压缩打包后形成的一个文件。静态库特点总结:

为什么需要动态库,其实也是静态库的特点导致。

动态库特点总结:

生成动态库


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

原文地址: https://outofmemory.cn/tougao/11765694.html

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

发表评论

登录后才能评论

评论列表(0条)

保存