Visual Studio C++项目的头文件搜索顺序
C++项目的几处包含路径设置
- VC++目录项下的“包含目录”(Include Directories):搜索头文件的路径设置。对应环境变量
INCLUDE 。即,在这里添加用户自己指定的库路径,在编译时会在INCLUDE 环境变量中加入该路径。 - C/C++下常规中的“附加包含目录”:
- 命令行的排除搜索路径选项/X:若打开该选项,则不从PATH或INCLUDE中中搜索头文件。如下图所示:
搜索包含文件的顺序
编译器按以下顺序搜索目录:
- 如果使用双引号,即
#include"SomeHeader.h" 指令,它将首先搜索本地目录。搜索开始于包含#include指令的文件所在的目录。如果找不到该文件,它将在当前打开的include文件的目录中按与打开顺序相反的顺序进行搜索。搜索从包含了它的父文件的目录开始,并继续向上搜索任何祖父母包含文件的所有目录。 - 如果
#include<SomeHeader.h> 指令是以尖括号形式指定的,或者如果本地目录搜索失败,它便不会追溯搜索父文件目录,而是将按照命令行中指定的顺序,使用/I 选项搜索指定的目录(附加包含目录)。 - 在
INCLUDE 环境变量中指定的目录。(VC++目录项下的“包含目录”)
举例
以下命令查找main.c 请求的包含文件,按以下顺序:
- 首先,
main.c 中使用双引号指定的头文件,搜索本地文件(在main.c 相同文件夹搜索); - 接下来,搜索在
\include 目录中继续,然后在\my\include 文件夹中继续,最后在INCLUDE 环境变量的目录中按从左到右的顺序进行。
CL /I \include /I\my\include main.c
|