首页 > 编程知识 正文

C语言的头文件,常用c语言头文件

时间:2023-05-06 02:48:43 阅读:199174 作者:2659

C语言的头文件详解

引言

在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。 .c就是你写的程序文件。

头文件的作用

一般在一个应用开发体系中,功能的真正逻辑实现是以硬件层为基础,在驱动程序、功能层程序以及用户的应用程序中完成的。头文件的主要作用在于多个代码文件全局变量(函数)的重用、防止定义的冲突,对各个被调用函数给出一个描述,其本身不需要包含程序的逻辑实现代码,它只起描述性作用,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。头文件是用户应用程序和函数库之间的桥梁和纽带。在整个软件中,头文件不是最重要的部分,但它是C语言家族中不可缺少的组成部分。编译时,编译器通过头文件找到对应的函数库,进而把已引用函数的实际内容导出来代替原有函数。进而在硬件层面实现功能。

什么样的内容适合放在头文件里?对于具有外部存储类型的标识符,可以在其他任何一个源程序文件中经声明后引用,因此用户完全可以将一些具有外部存储类型的标识符的声明放在一个头文件中。具体地说,头文件中可以包括:用户构造的数据类型(如枚举类型),外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量。而一般性的变量和函数定义不宜放在头文件中。例如:#include<stdio.h>中的头文件stdio.h作用是让链接器通过头文件里的函数声明找到函数实际代码所在的位置即所在的库文件,这样才能使用该函数的实际代码,函数的实际代码的实现过程是先让链接器通过头文件里函数的申明找到函数实际代码所在的位置即所在的库文件,再通过#include语句把链接器所找到的函数实际代码用链接器把函数的实际代码链接到当前文件即所要执行的程序中。当然有些函数的使用不需要提供头文件,但是在ISO/ANSI C已经对有些函数的使用必须提供哪些头文件制定了标准。

头文件的用法总结

头文件最常用的形式如下:

明示常量——例如,stdio.h中定义的EOF、NULL和BUFSIZE(标准I/O缓冲区大小)。宏函数——例如,getc(stdio.h)通常用getchar()定义,而getc()经常用于定义较复杂的宏,头文件ctype.h通常包含ctype系列函数的定义。函数声明——例如,string.h头文件(一些旧的系统是srings.h)包含字符串函数系列的函数声明。在ANSI C和后面的标准中,函数声明都是函数原型形式。结构模板定义——标准I/O函数使用FILE结构,该结构中包含了文件和缓冲区相关信息。FILE结构在头文件stdio.h中。类型定义——标准I/O函数使用指向FILE的指针为参数。通产stdio.h用#define或typedef把FILE定义为指向结构的指针。类似的,size_t和time_t类型也定义在头文件中。 其他用法

许多程序员在程序中使用自己开发的标准头文件。如果开发一些列相关的函数或结构,那么这种方法特别有价值。

另外,还可以使用头文件声明外部变量供其他文件共享。例如,如果已经开发了共享某个变量的一系列函数,该变量报告某种情况(如错误情况),这种方法就很有效。这种情况下,可以在包含这些函数声明的源代码文件定义一个文件作用域的外部链接变量:

int status = 0; //该变量具有文件作用域,在源代码文件

然后,可以在与源代码文件相关联的头文件中进行引用式声明:

extern int status; //在头文件中

这行代码出现在包含了该头文件的文件中,这样使用该系列函数的文件都能使用这个变量。虽然源代码文件中包含该头文件后也包含了该声明,但是只要声明的类型一致,在一个文件中同时使用定义式声明和引用式声明没问题。

需要包含头文件的另外一种情况是,使用具有文件作用域、内部链接和const限定符的变量或数组。const防止值被意外修改,static意味着每个包含该头文件的文件都获得一份副本。因此,不需要在一个文件中进行定义式声明,在其他文件中进行引用式证明。

[1] 百度百科-头文件
[2] 史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。