目录

Visual-Studio-C项目的头文件搜索顺序

Visual Studio C++项目的头文件搜索顺序

  1. VC++目录项下的“包含目录”(Include Directories):搜索头文件的路径设置。对应环境变量 INCLUDE 。即,在这里添加用户自己指定的库路径,在编译时会在 INCLUDE 环境变量中加入该路径。

    https://i-blog.csdnimg.cn/blog_migrate/40b82172cc87785b2e3b927ce17ffb82.png

  2. C/C++下常规中的“附加包含目录”:

    https://i-blog.csdnimg.cn/blog_migrate/b9452587854341860d333b0e77445e96.png

  3. 命令行的排除搜索路径选项/X:若打开该选项,则不从PATH或INCLUDE中中搜索头文件。如下图所示:

    https://i-blog.csdnimg.cn/blog_migrate/0e045c6948e6730d072df4d5417f60e6.png

编译器按以下顺序搜索目录:

  1. 如果使用双引号,即 #include"SomeHeader.h" 指令,它将首先搜索本地目录。搜索开始于包含#include指令的文件所在的目录。如果找不到该文件,它将在当前打开的include文件的目录中按与打开顺序相反的顺序进行搜索。搜索从包含了它的父文件的目录开始,并继续向上搜索任何祖父母包含文件的所有目录。
  2. 如果 #include<SomeHeader.h> 指令是以尖括号形式指定的,或者如果本地目录搜索失败,它便不会追溯搜索父文件目录,而是将按照命令行中指定的顺序,使用 /I 选项搜索指定的目录(附加包含目录)。
  3. INCLUDE 环境变量中指定的目录。(VC++目录项下的“包含目录”)

以下命令查找 main.c 请求的包含文件,按以下顺序:

  1. 首先, main.c 中使用双引号指定的头文件,搜索本地文件(在 main.c 相同文件夹搜索);
  2. 接下来,搜索在 \include 目录中继续,然后在 \my\include 文件夹中继续,最后在 INCLUDE 环境变量的目录中按从左到右的顺序进行。
CL /I \include /I\my\include main.c