juliusun.com
第 44/50 节 冥河C语言教程
头文件就是代码库,当我们需要使用某头文件的内容时,就需要包含头该文件。如printf函数是在stdio.h中定义的,那么当我们使用printf函数时,就需要包含stdio.h文件。
头文件是代码库,里面的代码可供源文件(如.c或.cpp文件)使用,头文件不能独立编译成可执行文件。
预处理include指令用来包含头文件。一个include指令只能包含一个头文件,要包含多个头文件,要用多个include指令。头文件可以嵌套包含,即一个头文件里还可以包含其它头文件。
include指令用法有两种,两种用法仅仅是在搜索头文件时,默认搜索的目录不同。两种用法如下:
在系统目录中搜索的用法格式为:
#include<文件名>
先在源文件所在目录中搜索,搜索不到再到系统目录中搜索用法格式为:
#include"文件名"
总结一下,include指令后面接尖括号<>时,编译器会去系统目录中搜索包含的文件。当include后面接双引号时,编译器会优先在当前目录中搜索,搜索到立即包含,搜索不到再到系统目录中寻找。如果还搜索不到会出错。
include和后面的尖括号<>或双引号中间可以用空格分开。部分资料介绍,include后面是双引号时,只会在源文件所在目录中搜索,为确保正确,请正确使用尖括号和双引号。
stdio.h头文件由于常用,很多流行的编译器在不手动包含的情况下,仍然自动包含。
以包含系统目录中的stdio.h头文件,例:
假设系统头文件所在目录为C:\Program Files\Microsoft Visual Studio 10.0\VC\include文件夹,.c所在目录为C:\projects\test文件夹,则上述代码会在C:\Program Files\Microsoft Visual Studio 10.0\VC\include中搜索stdio.h文件。而下面的代码:
会在.c文件所在目录C:\projects\test文件夹中搜索my.h。
include在包含文件时还可以写文件相对路径,文件windows用\分隔、linux用/分隔,比如在系统目录C:\Program Files\Microsoft Visual Studio 10.0\VC\include文件夹下有个sys文件,sys文件夹里有个utime.h头文件,想要包含utime.h可以这样写:
编译器发现include后面的\目录分隔符时,会自动分析出是系统目录下sys文件下的utime.h。路径的规则同样适用双引号源文件所在目录的情况。
上面介绍了包含子目录头文件的情况。包含父目录时,父目录用..\表示。如.c所在目录为C:\projects\test文件夹,但是在C:\projects文件下有一个p.h,在C盘根目录有个c.h,要包含这两个文件可以这样写:
上述代码以Windows系统为基准,其它环境请以实际情况为准。比如linux系统以/为路径分隔符。