c语言中有一种特殊的语言构造:预处理语句。预处理语句是由'#'开始,后跟一个预处理指令以及一个或多个参数的语句,预处理语句只能独占一行,如果需要跨多行,需要在换行之前使用一个'\',在编译器的预处理阶段,当预处理器碰到一个'\'后面紧跟一个换行符时,预处理器会同时把这两个字符给删除。
include预处理指令是用来包含其它文件的,通常用来包含一些以 h 为后缀名的头文件,当然也可以包含c语言成语的源文件。include指令有两种语法:
#include <file>
#include "file"
预处理器会使用文件file的内容来替换这两条include语句。
第一种语法用于包含系统包含路径中的文件,第二中语法在搜索系统路径之前会先在包含文件的当前目录下查找。在第二种语法中,文件名可以包含目录,当包含目录时,预处理器只会在包含文件的当前目录下查找。
在include语句中可以使用宏,但必须保证在预处理这条include指令时,语句中所使用的宏,有确切的值。
例如:
#define INC_FILE "myProject.h"
#include INC_FILE
这两条语句经过预处理器处理之后会生成如下的语句:
#include "myProject.h"
最终,预处理器会使用myProject.h文件的内容来替换这条语句。
include指令是可以嵌套的,即被包含的文件中也可以使用include预处理语句包含其它文件,这种嵌套最多可以有15层。这样就很有可能出现在一个文件中多次包含了同一个文件。
为了避免这种情况,可以使用另一个种预处理语句:条件编译。可以在被包含的文件中,使用条件编译。
避免重复包含
#ifndefine _INCFILE_H_
#define _INCFILE_H_
/* 文件的内容 */
#endif