描述
今天我们来聊聊C语言中的头文件。
c语言程序代码文件扩展名只能是.c或者.h,换句话说,c语言程序代码只能在扩展名为.c或者.h的文件中编写。我们把.h文件称为头文件。头文件可以在.c文件中引用,也可以在.h文件中引用。
头文件是做什么用的呢?我们来看一段程序代码。
左边是源代码,右边是执行结果。这段代码的功能是打印出字符串“Hello, World!”。
我们能看到,源代码文件第一行是"#include ",也就是引用了头文件stdio.h。现在我们把这一行去掉,再执行一下看看结果。
注:c语言中行前加双斜线“//”代表注释掉这一行,也就是去掉这一行代码。
这时我们发现执行后右边的结果栏出现了报错,为什么呢?这是因为打印语句是printf函数输出的,而printf函数是在头文件stdio.h中声明的,把引用stdio.h这一行去掉,代码在编译时就找不到printf这个函数,所以就报错了。
有的朋友问,我们不引用头文件,把printf函数放在.c文件里可以吗?当然可以。但是printf属于通用函数,几乎每个.c文件都会用到,像这样使用频率极高的函数有很多,甚至有几百个,一个项目里的.c文件也有很多,每个.c文件里放几百个函数声明,是不是很难看?况且我们只想直接调用这些函数,根本不关心这些函数长什么样子,又何必把它罗列在我们的.c文件中?
c语言为我们实现了许多通用的函数,比如拷贝函数、比较函数等等,放在一个通用的函数库中供我们直接使用,而这些函数的声明就放在一些标准的头文件中,stdio.h就是标准头文件之一,我们只要引用这些头文件,就可以直接调用头文件中声明的函数,而无需自己去实现这些函数了。当然,除了可以引用标准头文件,我们也可以根据实际需求,自己创建和编写头文件。
那么头文件的内容只能是函数声明吗?当然不是。除了函数声明,变量定义、结构定义、宏定义都可以放在头文件中,如果你觉得你写的某个函数使用率很高,也可以把它放在头文件中。总而言之,通用的东西都可以放在头文件中。
头文件的引用可以写成“#include ",也可以写成"#include "stdio.h" ", 像下图一样。
头文件用尖括号括起来和用引号括起来意义是不同的,前者意思是让编译器直接去c函数库里或者用户配置的路径去查找,而不会在当前目录去查找。后者意思是让编译器先在当前目录去找,如果当前目录找不到,再去c函数库里或者用户配置的路径去查找。这里所说的当前目录,大家可以理解为引用头文件的文件所在的目录。
好了,今天就跟大家分享到这里。
打开APP阅读更多精彩内容
点击阅读全文