编辑全局变量时减少重新编译

时间:2015-03-26 00:51:07

标签: c++ compilation global-variables constants game-engine

我正在制作游戏, 我有一个庞大的const全局变量.h文件列表,许多.cpp文件都依赖于该文件。 (敌人想知道玩家的最大马力等)

然而,当文件中的任何变量发生变化以进行游戏平衡时,这是一个编译噩梦。

我希望防止将文件拆分成多个标题,以方便负责游戏平衡的人。

然而,重新分类是一种痛苦(清晰度与编译时间相比,播放器的最大hp用于许多.cpp但它应该属于PlayerVariables.h,包括它在每个使用它的文件中都会破坏目的将它们分开)。

除了上述方法之外,有没有办法节省一些时间?

2 个答案:

答案 0 :(得分:1)

只需在头文件中声明全局变量即可。并在另一个源文件中定义它们。这样,如果任何值被更改,只需要重新编译globals.cpp,因为所有内容都包含来自hpp的全局变量。

在globals.hpp中:

extern const unsigned PLAYER_MAX_HEALTH;

在globals.cpp中:

#include "globals.hpp"

const unsigned PLAYER_MAX_HEALTH = 100;

答案 1 :(得分:1)

您可以尝试使用预处理器添加配置步骤:

  1. config.h
  2. 中只有预处理器#define
  3. 将预处理器拆分为多个标题,只需要引入那些需要声明实际const变量/ enum-values / whatever的定义。
  4. 仅复制与之前版本不同的文件。
  5. 也可选择使用glabals.cpp定义那些可能还需要定义的符号。
  6. 确保在配置更新后(重新)运行make。
  7. 仅仅声明外部常量变量并在不同的转换单元中定义和初始化它们的优点是常量传播并具有适当的编译时常量。