C语言头文件的作用

C99中规定, 所有顶层的默认存储类标志符都是extern !!老子又猜对了


头文件中声明的函数,默认都是extern前缀。但是为了我们程序员方便,我们采取下面的手段:






我个人认为是extern催生了头文件的诞生。
在没有头文件的情况下,所有本.c文件引用的外部函数定义,都要在自己.c文件内声明 并且加前缀extern


在代码增多,项目复杂的情况下,这个手段有点粗糙,那么我们把想提供给外部.c文件使用的函数放在头文件中(默认是extern前缀)


那么当其他某个.c文件需要用到这些函数的时候,只要包含了这个头文件,那么在预处理后,头文件被完整的复制到.c文件内,


这也就用另外一种间接的方式完成了原来的工作。








我们这么使用,如果某个函数不想被外部使用(很多时候这样),我们就在.c文件开始声明(并加以static前缀)这样,外部函数就找不到了
如果我们想让外部.c文件找到这个函数,就声明在头文件中。想使用的.c文件包含这个头文件就好。




编译的时候,只要每个函数都又声明就可以。
连接的时候,连接器发现本.o文件中没有某个函数的定义,根据当前连接 对象列表(我们把一堆.o文件连接到一块,这一堆,叫做连接对象列表),
去找函数的定义

你可能感兴趣的:(C语言头文件的作用)