包括来自不同目录的头文件?

Sta*_*aro 14 c++ include

我正在研究一个项目,我一直都不知道如何从不同的目录导入文件.以下是我的一些文件的组织方式:

-stdafx.h
-core/
-->renderer.cpp
-shapes/
-->sphere.h
-->sphere.cpp
Run Code Online (Sandbox Code Playgroud)

我如何访问stdafx.hshapes/sphere.hcore/renderer.cpp

Mic*_*ker 11

有很多方法.#include "../stdafx.h"例如,你可以.更常见的是将项目的根添加到包含路径并使用#include "shapes/sphere.h".或者在include path中有一个带头文件的单独目录.

  • 我如何为其添加根? (3认同)

Dav*_*ger 8

您可以使用相对路径:

#include "../stdafx.h"
#include "../shapes/sphere.h"
Run Code Online (Sandbox Code Playgroud)

或者将您的项目目录添加到您的编译器包含路径并像平常一样引用它们:

#include "stdafx.h"
#include "shapes/sphere.h"
Run Code Online (Sandbox Code Playgroud)

您可以使用/I 命令行选项在项目设置中添加路径或设置路径。


小智 7

一种执行此操作的(错误)方法是在#include行中包含要包含的头文件的相对路径。例如:

包括“ headers / myHeader.h”

包括“ ../moreHeaders/myOtherHeader.h”

这种方法的缺点是它要求您在代码中反映目录结构。如果您更新目录结构,则代码将无法再使用。

更好的方法是告诉编译器或IDE在其他位置有很多头文件,以便当它在当前目录中找不到它们时会在其中查找。通常,可以通过在IDE项目设置中设置“包含路径”或“搜索目录”来完成此操作。

在Visual Studio中,您可以在解决方案资源管理器中右键单击您的项目,然后选择“属性”,然后选择“ VC ++目录”选项卡。从这里,您将看到一条名为“包含目录”的行。在其中添加您的包含目录。

在Code :: Blocks中,转到“项目”菜单,然后选择“构建选项”,然后选择“搜索目录”选项卡。在其中添加您的包含目录。

使用g ++,可以使用-I选项指定备用include目录。

g ++ -o main -I / source / includes main.cpp

这种方法的好处是,如果您更改了目录结构,则只需要更改一个编译器或IDE设置,而不必更改每个代码文件。