使用(相对)路径快捷方式在C ++中包含语句

时间:2016-11-21 06:50:58

标签: c++ header-files relative-path shortcuts

几天前我开始用C ++编写代码。我使用Windows作为我的操作系统来编写代码。我一直把所有“写得很好”的代码保存在一个地方。现在,我正在开发一个需要使用这些代码的项目。因此,我计划在项目中包含我需要的那些文件作为头文件。但是,为了使我的项目“自包含”,我创建了我需要的那些文件夹的快捷方式,并将它们保存在我的新项目的源文件夹中,并决定使用“include”中快捷方式的相对路径我项目中的陈述。

但是,我收到了一个错误。有没有办法在Windows的C ++ include语句中使用相对(或通常是绝对的)快捷方式的路径?

感谢。

2 个答案:

答案 0 :(得分:5)

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

如果包含双引号,例如<。p>

#include "some_header_file.h"

然后相对路径来自当前文件位置。

如果您使用尖括号,例如<。

#include <some_header_file.h>

然后相对路径基于系统包含路径。

您始终可以添加系统包含路径的路径。如何做取决于您的环境和编译器。如果您正在使用Visual Studio,则可以进入项目属性对话框,然后进入&#34; C / C ++&#34; /&#34;一般&#34;选项卡上有一个名为&#34; Additional Include Directories&#34;你可以在哪里添加目录。 (这适用于VS 2015,在其他版本上可能略有不同。)

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

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

Project/Source中您有源文件,如果其中一个想要包含来自Project/Include的头文件,那么它将类似于

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

现在,如果您在Project/Source/MoreSource中有一个想要包含相同头文件的源文件,那么

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

Project/Include目录添加到系统标头搜索路径可能很有用。您仍然可以使用双引号来包含文件,因为如果找不到它们,那么预处理器也将搜索系统路径,但您不需要&#34; full&#34;相对路径。如果将Project/Include添加到系统标头路径,则可以只编写

#include "header.h"

或者

#include <header.h>

但请注意,如果您的头文件与实际系统头文件同名,则可能会遇到一些问题。

答案 1 :(得分:1)

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

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

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