10.2 文件包含
考点3 文件包含
真考链接
考点3属于重点理解内容,在选择题中的考核概率为10%。
所谓文件包含,是指在一个文件中包含另一个文件的全部内容。C语言用 #include命令行来实现文件包含的功能。形式如下:
#include"文件名"或 #include<文件名>
在预编译时,预编译程序将用指定文件中的内容来替换此命令行。如果文件名用双撇号括起来,则系统先在当前源程序所在的目录内查找指定的包含文件,如果找不到,再按照系统指定的标准方式到有关目录中去寻找。如果文件名用尖括号括起来,系统将直接按照指定的标准方式到有关目录中去寻找。
说明:
(1)#include命令行通常书写在所用文件的最开始部分,所以有时也把包含文件称做“头文件”。头文件名可以由用户指定,其后缀不一定用“.h”。
(2)当包含文件被修改后,对包含该文件的源程序必须重新进行编译连接,这样才会使修改后的文件生效。
(3)在一个包含文件中还可以包含另外的文件。
(4)在一个程序中可以有多个 #include命令行。
小提示
如果程序在编译过程中出现“程序中包含未定义的变量”,则首先应考虑到在头文件是否包含了程序必需的文件。
常见问题
在包含文件中一般都是什么内容?
一般包含一些公用的#define命令行、外部说明或对(库)函数的原型说明,如常见的标准输入/输出头文件stdio.h就是这样的头文件。
真题精选
【例1】以下叙述中,正确的是( )。
A.用#include包含的头文件的后缀不可以是“.a”
B.若一些源程序中包含某个头文件,当该头文件有错误时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译
C.宏命令行可以看做是一行C语句
D.C编译中的预处理是在编译之前进行的
【答案】D
【解析】#include命令行中,头文件只要是文本文件,文件名的后缀可以是任意合法的后缀名,可以用“.a”作为后缀名。当源程序中包含头文件时,可以对其中所包含的头文件进行修改,但修改后必须对该源程序重新进行编译。宏命令行不是C语句。C编译中的预处理是在编译之前进行的。
【例2】程序中头文件typel.h的内容是:
#define N 5
#define M1 N*3
/*程序如下:*/
#include "stdio.h"
#include "typel.h"
#define M2 N*2
main()
{ int i;
i=M1+M2;
printf("% d\n",i);
}
程序编译后运行的输出结果是( )。
A.10 B.20 C.25 D.30
【答案】C
【解析】本题考查了两个知识点:一个是宏替换(不带参数和带参数的都考查了);另一个是头文件包含。需要注意的是,宏替换是先原样替换,然后再判断运算的优先级,本题难度不大,通过正常的运算可得到的答案是25。