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

Pyt*_*ser 3 c++ shortcuts relative-path header-files

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

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

谢谢.

Som*_*ude 7

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

如果你包括双引号,例如

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

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

如果你包括使用角括号,例如

#include <some_header_file.h>
Run Code Online (Sandbox Code Playgroud)

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

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


关于双引号包含.让我们说你的项目层次结构看起来像这样(在磁盘上!):

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

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

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

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

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

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

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

要么

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

但要小心,如果您的头文件与实际系统头文件同名,则可能会遇到一些问题.