我正在开发一款游戏,我有一个很大的const全局变量.h文件列表,许多.cpp文件都依赖它。(敌人想知道玩家的最大马力等)
然而,当为了游戏平衡而更改文件中的任何变量时,这将是一场编译噩梦。
为了便于负责游戏平衡的人,我想防止将文件拆分为多个标题。
然而,重新分类是一种痛苦(清晰度与编译时间相比,Player的最大hp在许多.cpp中使用,但它应该属于PlayerVariables.h,包括在每个使用它的文件中,有点破坏了拆分它们的目的)。
除了上述方法之外,还有其他方法可以节省一些时间吗?
只需在头文件中声明全局变量。并在另一个源文件中定义它们。这样,如果更改了任何值,则只需要重新编译globals.cpp,因为所有内容都包括hpp中的globals。
在globals.hpp:
extern const unsigned PLAYER_MAX_HEALTH;
在globals.cpp:
#include "globals.hpp"
const unsigned PLAYER_MAX_HEALTH = 100;
您可以尝试使用预处理器添加一个配置步骤:
- config.h中只有预处理器
#define
- 使用预处理器将其拆分为多个头,只引入它们需要声明实际常量变量/枚举值/任何东西的定义
- 只复制那些与以前版本上运行的文件不同的文件
- 也可以选择有一个glabals.cpp来定义那些可能也需要定义的符号
- 请确保在更新配置后(重新)运行Make
与只声明外部常量变量并在不同的转换单元中定义和初始化它们相比,优势在于常量传播和具有适当的编译时常量。