如何在VC++项目中强制执行其他包含文件搜索顺序?

use*_*597 8 c c++ visual-studio

例如,我有两个header.h文件位于两个不同的目录include1include2.我的源代码文件使用不指定确切位置的常规包含,如下所示:

#include "header.h"
Run Code Online (Sandbox Code Playgroud)

在项目配置中,我将include1include2文件夹设置为其他包含目录列表.

问题是当我构建我的项目时,每次都会选择include1文件夹,而不管我在附加包含列表中定义它们的顺序.

有没有办法强制执行搜索顺序,如果我想要一个特定的文件夹或特定的头文件,而不是另一个,如果他们都有相同的文件名?

Avi*_*urg 10

在包括顺序(如记录由MS)为:

编译器按以下顺序搜索目录:
1.包含源文件的目录.
2.使用/ I选项指定的目录,按CL遇到它们的顺序.
3. INCLUDE环境变量中指定的目录.

所以它实际上取决于声明包含目录的位置.如果它们都使用/ I选项指定(在配置属性> C/C++>常规>附加包含目录下的GUI中),则指定的顺序是搜索的顺序.如果目录位于INCLUDE环境变量中(在"配置属性">"VC++目录"下的GUI中),则它取决于它们的声明位置.如果它在属性表中,那么你必须继承它们并以所需的顺序自己声明它们(和其他继承的目录).