在 C++ 的 include 语句中使用(相对)路径作为快捷方式

Using (relative) paths to shortcut in include statements in C++

我几天前开始用 C++ 编写代码。我使用 windows 作为我的 OS 来编写代码。我一直将所有 "well-written" 代码保存在一个位置。现在,我正在从事一个需要使用这些代码的项目。因此,我计划将我需要的那些文件作为头文件包含在我的项目中。但是,为了使我的项目 "self-contained",我创建了我需要的那些文件夹的快捷方式,并将它们保存在我的新项目的源文件夹中,并决定使用“include”中快捷方式的相对路径我项目中的语句。

但是,我遇到了一个错误。有什么方法可以在 windows 中的 C++ include 语句中使用相对(或一般来说,绝对)快捷方式路径?

谢谢。

这实际上取决于如何包含header文件。

如果您包含 double-quotes,例如

#include "some_header_file.h"

那么相对路径就是从当前文件位置开始的。

如果您使用 angle-brackets,例如

#include <some_header_file.h>

那么相对路径是基于系统包含路径的。

您始终可以将路径添加到系统包含路径。如何执行取决于您的环境和编译器。如果您使用 Visual Studio,则进入项目属性对话框,在 "C/C++" / "General" 选项卡中有一个名为 "Additional Include Directories" 的字段,您可以在其中添加目录。 (这是针对 VS 2015 的,在其他版本上可能会有所不同。)


关于包含双引号。假设您的项目层次结构如下所示(在磁盘!):

Project
|-- Include
|-- Source
|   `-- MoreSource
`-- Other

Project/Source 中你有你的源文件,如果其中一个想要包含来自 Project/Include 的 header 文件,那么它看起来像

#include "../Include/header.h"

现在,如果您在 Project/Source/MoreSource 中有一个源文件想要包含相同的 header 文件,它将是

#include "../../Include/header.h"

Project/Include 目录添加到系统 header 搜索路径可能会很有用。您仍然可以使用 double-quotes 来包含文件,因为如果找不到它们,预处理器也会搜索系统路径,但您不需要 "full" 相对路径。如果将 Project/Include 添加到系统 header 路径,则可以只写

#include "header.h"

#include <header.h>

不过要小心,如果您有一个与实际系统 header 文件同名的 header 文件,您可能会遇到一些麻烦。

来自 https://superuser.com/questions/253935/what-is-the-difference-between-symbolic-link-and-shortcut

您不能包含文件夹快捷方式,因为它是文件,而不是文件夹。

您可以阅读 create symbolic link on windows 的指南。