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

新手上路,请多包涵

我正在做一个项目,我一直对我应该如何从不同的目录导入文件感到困惑。以下是我的一些文件的组织方式:

 -stdafx.h
-core/
-->renderer.cpp
-shapes/
-->sphere.h
-->sphere.cpp

我如何从 --- 访问 stdafx.hshapes/sphere.h core/renderer.cpp

原文由 Stas Jaro 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 651
2 个回答

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

原文由 Michael Krelin - hacker 发布,翻译遵循 CC BY-SA 3.0 许可协议

一种(不好的)方法是在#include 行中包含要包含的头文件的相对路径。例如:

 #include "headers/myHeader.h"
#include "../moreHeaders/myOtherHeader.h"

这种方法的缺点是它要求您在代码中反映您的目录结构。如果您更新了目录结构,您的代码将不再工作。

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

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

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

对于 g++ ,您可以使用 -I 选项指定备用包含目录。

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

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

原文由 Pushpak Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题