C++ 需要在许多目录中包含头文件

标签 c++ header-files organization code-organization

我在 2D terraria/Minecraft 风格的游戏中有以下文件夹结构:

src/
- Backend/
- - Vector.hpp
- World/
- - Elements/
- - - Mobs/
- - - - BaseMob.cpp

如您所料,每个目录中还有更多的源文件。在 BaseMob.cpp 中,我需要访问 src/Backend/Vector.hpp是否有更简洁的方式来编写 #include "../../../Backend/Vector.hpp"(即 #include "/Backend/Vector.hpp") hpp") 或组织源文件夹中文件的更好方法?

这里有一些关于源文件夹中实际内容的更多信息(大多数 .cpp 文件被排除在外):

Backend/ # Anything specific to a particular platform
- Vector.hpp
- Graphics.hpp
World/ # Anything about the whole game's world
- Elements/
- - Mobs/
- - - BaseMob.hpp # Polymorphic base class
- - - MobHandler.hpp # Manages all mobs in world
- - - PlayerMob.hpp
- - - WaterMob.hpp
- - Block.hpp # Defines all possible blocks
- - Inventory.hpp
- - Furnace.hpp
- World.hpp
- WorldRenderer.hpp # Makes calls to Backend/graphics.hpp
main.cpp

最佳答案

您可以考虑重新组织您的包含文件夹。这是一个可能的解决方案,但可能还不够:当您开始使用第 3 方库时,您将无法做到这一点……因此您需要一种更好的方法来解决这个问题。

干净的方法是将所需的文件夹(存储所需头文件的文件夹)添加到编译器使用的“包含路径”,以便它可以找到它们。

然后,您将 World/Elements/Mobs 添加到包含路径,而不是 #include "World/Elements/Mobs/BaseMob.hpp",然后简单地执行#include "BaseMob.hpp"

如果您使用不同的编译器/IDE,它必须提供一个选项来执行此操作。

关于C++ 需要在许多目录中包含头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734256/

相关文章:

c++ - #include 会影响程序大小吗?

java - 我如何在java中组织这个多边形列表以便它们易于使用?

C++ 仿函数输出迭代器适配器

c++ - g++ vs intel/clang 参数传递顺序?

c++ - Qt 如何添加到 Windows 标题栏?

C++11 std::shared_ptr 工作正常,但 boost::shared_ptr 崩溃,这可能是什么原因?

c - Ubuntu 中的 skbuff.h 文件在哪里?

c++ - 在 C++ 中取消定义类型定义?

php - 在哪里存储辅助函数?

c# - 我应该如何组织我的 C# 解决方案?