C语言#include的用法(附带实例)
使用 #include 命令可将其他源文件的内容包含进来,即将其他文件包含到本文件之中。被读入的源文件必须用双引号或尖括号括起来。

图 1 文件包含
例如,下面两行代码均表示包含了标准输入/输出库文件 <stdio.h>,后续可直接使用其中的函数而不用再定义:
通常情况下,包含库函数时,使用尖括号可以节省查找时间;包含用户自定义文件时,使用双引号比较快捷。用户自己编写的文件通常保存在当前目录中,如果文件不在当前目录中,双引号内还可以给出文件路径。
将文件直接嵌入 #include 命令内也是可行的,这种方式称为嵌套的嵌入文件。嵌套层次依赖于具体实现,如下图所示。
注意,在 Visual C++ 6.0 环境中,是可以省略 #include 指令的。但现代 C 语言开发,提倡在使用前交代清楚每个标识符的作用,所以建议开发者合理添加预处理命令 #include 指令。
【实例】一年长一岁。
1) 文件 age.h:
2) 文件 age.c:
经常用在文件头部的被包含文件称为标题文件或头文件,一般以 .h 为后缀。一般情况下,将如下内容放到 .h 文件中:
使用文件包含为实现程序修改提供了方便。当需要修改某些参数时,不必逐个修改程序,只需修改一个文件(头部文件)即可。
关于文件包含,有以下几点需要注意:

图 1 文件包含
例如,下面两行代码均表示包含了标准输入/输出库文件 <stdio.h>,后续可直接使用其中的函数而不用再定义:
#include "stdio.h" #include <stdio.h>双引号和尖括号的区别如下:
- 尖括号:此为标准方式,系统会直接到存放 C 库函数头文件所在的目录中寻找要包含的文件;
- 双引号:系统先在用户当前目录中寻找要包含的文件,若找不到,再到存放 C 库函数头文件所在的目录中寻找要包含的文件。
通常情况下,包含库函数时,使用尖括号可以节省查找时间;包含用户自定义文件时,使用双引号比较快捷。用户自己编写的文件通常保存在当前目录中,如果文件不在当前目录中,双引号内还可以给出文件路径。
将文件直接嵌入 #include 命令内也是可行的,这种方式称为嵌套的嵌入文件。嵌套层次依赖于具体实现,如下图所示。
注意,在 Visual C++ 6.0 环境中,是可以省略 #include 指令的。但现代 C 语言开发,提倡在使用前交代清楚每个标识符的作用,所以建议开发者合理添加预处理命令 #include 指令。
【实例】一年长一岁。
1) 文件 age.h:
#define P printf /*定义头文件*/ #define D "%d" #define A (age+1)
2) 文件 age.c:
#include "stdio.h" /*包含头文件*/ #include "age.h" /*包含自定义头文件*/ int main() /*主函数 main*/ { int age = 3; /*定义变量*/ age=A; /*引用头文件包括内容*/ P("年龄是"D"岁\n",age); /*输出结果*/ return 0; /*程序结束*/ }运行结果:
年龄是4岁
经常用在文件头部的被包含文件称为标题文件或头文件,一般以 .h 为后缀。一般情况下,将如下内容放到 .h 文件中:
- 宏定义;
- 结构、联合和枚举声明;
- typedef 声明;
- 外部函数声明;
- 全局变量声明。
使用文件包含为实现程序修改提供了方便。当需要修改某些参数时,不必逐个修改程序,只需修改一个文件(头部文件)即可。
关于文件包含,有以下几点需要注意:
- 一个 #include 命令只能指定一个被包含的文件;
- 文件包含是可以嵌套的,即在一个被包含文件中还可以包含另一个被包含文件;
- 若 age.c 中包含文件 age.h,则预编译后两者会成为一个文件。如果 age.h 中有全局静态变量,则该全局变量在 age.c 文件中也有效,这时不需要再用 extern 声明。