include: 如何寻找include指令指定的file(inc file)头文件
实际的目录结构如下:
----len //目录下有文件 be.cpp 和 be.h, ce.h,及一个子文件夹inc
|----inc //目录下有文件common.h
预编译器按下面的步骤依次寻找:
1.在包含include语句的文件(该文件叫头文件的parentFile)所在的目录找:
//in be.cpp:
#include "be.h" //在len目录下找
//in be.h:
#include "common.h" //Error. 在len目录下找,没找到.
#include "inc/common.h" //Ok. common.h在sub folder 中.
//in common.h:
#include "../ce.h" //Ok. ce.h在super folder中.
2.如果(1)没找到,则在parentFile的parentFile(grantparent file)所在的目录中找。
由于在inc file中仍然可以使用#include指令,所以一个inc file可以有parent file, grantparent file
//in be.h:
#include "inc/common.h" //Ok. common.h在sub folder中
//in common.h:
#include "ce.h" //Ok.虽然ce.h不在inc目录下(parent file----common.h所在的目录),但在len目录下(grantparent----be.h所在的目录);
第2条是递归的,会依次找parent的parent的...parent目录。
3.在/I参数指定的目录中找
//已经指定/I"inc"
//in be.h:
#include "common.h" //Ok.common.h在inc下
查找时按1.2.3的顺序找,文件名区分后缀(common和common.h是两文件)