1. 功能:一个源文件可将另一个源文件的内容全部包含进来

2. 一般形式: #include “ 文件名”

                   或 #include < 文件名>

区别:

       用尖括号时,编译器从C

     

3.

源文件(*.c)

头文件(*.h)

4.

1 )一个#include 命令只能指定一个被包含文件,如果要包含n 个文件,要用n 个#include

2 )如果文件1 包含文件2 ,而文件2 中要用到文件3 的内容,则可在file1.c

   #include "file3.h"

   #include "file2.h"

3

4 )被包含文件与其所在的文件,在预编译后已成为同一个文件,因此,如果file2.h 中有全局变量,它也在file2.c 文件中有效,不必用extern

特别注意:

由于嵌套包含文件的原因一个头文件可能会被多次包含在一个源文件中条件指示符可防止这种头文件的重复处理。

例如:

#ifndef BOOKSTORE_H

#define BOOKSTORE_H
#endif

条件指示符#ifndef 检查BOOKSTORE_H 在前面是否已经被定义,这里BOOKSTORE_H 是一个预编译器常量习惯上预编译器常量往往被写成大写字母,如BOOKSTORE_H 在前面没有被定义则条件指示符的值为真于是从#ifndef 到#endif 之间的所有语句都被包含进来进行处理。相反,如果#ifndef 指示符的值为假则它与#endif 指示符之间的行将被忽略,为了保证头文件只被处理一次,把如下#define

#define BOOKSTORE_H

放在#ifndef 后面这样在头文件的内容第一次被处理时BOOKSTORE_H 将被定义,从而防止了在程序文本文件中以后#ifndef

 

只要不存在两个必须包含的头文件要检查一个同名的预处理器常量这样的情形,这个策略就能够很好地运作。#ifdef

#ifdef
#if defined (__GCC__)   ¦ ¦ defined (__SUN_C__)
之类的指令,就是针对不同编译器、平台进行选择编译的预处理指令。当编译环境没有定义这个特定的符号的时候,则预处理器会自动忽略这一部分的代码。除了用 #ifdef 判断符号是否定义,还可以判断符号的值。VC 中常见的将 MSC_VER 与特定值比较以判断 VC

除了以上提到的一些内容,还有一些相对少见的预处理器指令,如 #pragma

 

文件包含是指一个C语言源程序中将另一个C语言源程序包含进来,通过include预处理指令实现。

    一般形式: 
    #include”被包含文件名”
    或#include<被包含文件名>
    作用:将指定文件包含在当前文件中,插入至文件包含指令相应位置处。使用文件包含指令,可以减少程序设计人员的重复劳动,提高程序开发效率。
    说明:
    (1)被包含的文件一般指定为头文件(*.h),也可为C程序等文件
    (2)一个include指令只能指定一个被包含文件,如果要包含n个文件,则要用到n条include指令。
    (3)不能包含OBJ文件。文件包含是在编译前进行处理,不是在连接时进行处理。
    (4)当文件名用双引号括起来时,系统先在当前目录中寻找包含的文件,若找不到,再在系统指定的标准方式检索其它目录。而用尖括号时,系统直接按指定的标准方式检索。
    一般系统提供的头文件,用尖括号。自定义的文件,用双引号。
    (5)被包含文件与当前文件,在预编译后变成同一个文件,而非两个文件。
    (6)文件包含可以嵌套,但必须按顺序包含。