C++需要包含许多目录的标头
C++ need to include headers many directories up
我在2D泰拉瑞亚/我的世界风格的游戏中有以下文件夹结构:
src/
- Backend/
- - Vector.hpp
- World/
- - Elements/
- - - Mobs/
- - - - BaseMob.cpp
正如您所猜测的,每个目录中还有更多的源文件。在BaseMob.cpp
里面我需要访问src/Backend/Vector.hpp
.有没有更干净的方法来写#include "../../../Backend/Vector.hpp"
(即。 #include "/Backend/Vector.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
您可以考虑重新组织包含文件夹。这是一个可能的解决方案,但可能还不够:当您开始使用第三方库时,您将无法做到这一点......所以你需要一个更好的方法来解决这个问题。
干净的方法是将所需的文件夹(存储所需头文件的文件夹)添加到编译器使用的"包含路径"中,以便可以找到它们。
然后,而不是 #include "World/Elements/Mobs/BaseMob.hpp"
,您将World/Elements/Mobs
添加到包含路径,然后简单地执行#include "BaseMob.hpp"
- 例如,如果您使用 gcc:如何在 linux 中添加 gcc 的默认包含路径? 对于Visual Studio
- :包含路径如何在Visual Studio中工作?...
如果使用其他编译器/IDE,则必须提供执行此操作的选项。
我建议不要在 #include 语句中放置路径。 如果文件移动,则必须更改所有源。
IMO,更好的方法是告诉编译器在哪里查找包含文件。 常见的命令行编译器选项是"-I"(大写字母 i)。 在 IDE 中,可能有一个设置,您可以在其中列出要搜索的所有路径。
通过告诉编译器在哪里搜索,您可以包含的文件可以在任何地方并且可以移动,并且不必更改源代码。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 无法在UE4中包含BP类到CPP类
- g++ 说函数不存在,即使包含正确的标头
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- Visual C++GC接口如何启用它以及要包含哪个库
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)