这真的取决于how您包含头文件。
如果包含双引号,例如
#include "some_header_file.h"
那么相对路径是从当前文件位置开始的。
如果您使用尖括号,例如
#include <some_header_file.h>
那么相对路径是基于系统包含路径的。
您始终可以将路径添加到系统包含路径。如何执行取决于您的环境和编译器。如果您使用的是 Visual Studio,请进入项目属性对话框,在“C/C++”/“常规”选项卡中,有一个名为“其他包含目录”的字段,您可以在其中添加目录。 (这是针对 VS 2015 的,其他版本可能略有不同。)
关于双引号包含。假设您的项目层次结构如下所示(在disk!):
Project
|-- Include
|-- Source
| `-- MoreSource
`-- Other
In Project/Source
你有你的源文件,如果其中一个想要包含来自的头文件Project/Include
,那么它会看起来像
#include "../Include/header.h"
现在如果你有一个源文件Project/Source/MoreSource
想要包含相同的头文件
#include "../../Include/header.h"
添加以下内容可能会很有用Project/Include
目录到系统头搜索路径。您仍然可以使用双引号来包含文件,因为如果找不到它们,预处理器也会搜索系统路径,但您不需要“完整”相对路径。如果你添加Project/Include
到系统头路径,你可以写
#include "header.h"
Or
#include <header.h>
但要小心,如果你有一个与实际系统头文件同名的头文件,你可能会遇到一些麻烦。