1
C/C ++程序设计
1.2.10.2 10.2 文件包含

10.2 文件包含

在程序设计中,文件包含是很有用的。一个大的程序可以分为多个模块,由多个程序员分别开发。有些公用的符号常量或宏定义等可单独组成一个文件,需要使用这些常量或者宏定义时,只需要在源文件中使用文件包含指令包含定义这些量的文件即可。这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错。

文件包含指令的功能是把指定的文件插入该指令行位置,并取代该指令行,从而把指定的文件和当前的源程序文件连成一个源文件。

通常以头文件来编写这些被包含的文件,也就是以.h作为这些文件的扩展名。也可以使用.c为扩展名,或者不写扩展名,这都是允许的,只是使用.h更普遍,因为它能够表示该文件的性质。

文件包含的一般形式:

#include"文件名"

【例10.4】文件包含的使用。

新建名为“myfile.c”的【C++Source File】文件,并在代码编辑区中输入以下代码。

代码如下:

img364

运行结果如图10-4所示。

img365

图10-4

分析:

在编译这两个文件时,编译器并不是分开编译生成两个目标文件的,而是通过文件包含# include指令,把文件“myfile.h”先包含到源程序“myfile.c”中。当然在“myfile.c”文件中还包含了标准输入输出头文件“stdio.h”,这些文件经过预编译指令合并在一起后,得到一个新的源程序,然后对这个新文件编译,仅得到一个“myfile.obj”目标文件。

文件包含指令还要说明以下几点:

(1)包含指令中的文件名可以用双引号括起来,也可以用尖括号括起来。例如以下写法都是允许的:

#include"stdio.h"

#include<math.h>

使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找;使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。用户编程时可根据自己文件所在的目录来选择某一种指令形式。

(2)一个include指令只能指定一个被包含文件,若有多个文件要包含,则需用多个include指令。如在myfile.c中包含

#include"myfile1.h"

#include"myfile2.c"

myfile.c就分别包含了两个文件。需要注意的是,包含文件是有前后顺序的,如果需要在myfile2.c文件中使用myfile1.h文件中的数据,这时就必须先包含myfile1.h文件,再包含myfile2.c文件。

(3)文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件,但是必须按照顺序,文件不允许重复包含。