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

Reduce recompilation when editing global variables

我正在开发一款游戏, 我有很多 .cpp 文件所依赖的 const 全局变量 .h 文件的巨大列表。 (敌人想知道玩家的最大生命值等)

但是,当为了游戏平衡而更改文件中的任何变量时,这将是一场编译噩梦。

我不想将文件拆分成多个 headers 以方便负责游戏平衡的人。

然而,重新分类有点痛苦(清晰度与编译时间,Player 的最大 hp 在许多 .cpp 中使用,但它应该属于 PlayerVariables.h,包括在每个使用它的文件中破坏了将它们分开的目的。

除了上述方法,还有其他节省时间的方法吗?

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

在globals.hpp中:

extern const unsigned PLAYER_MAX_HEALTH;

在globals.cpp中:

#include "globals.hpp"

const unsigned PLAYER_MAX_HEALTH = 100;

您可以尝试使用预处理器添加 configure-step:

  1. 在 config.h
  2. 中只有预处理器 #define
  3. 用预处理器将它拆分成多个 headers 只引入他们需要声明实际 const 变量/enum-values / 任何东西的定义。
  4. 只复制与之前版本不同的文件运行。
  5. 还可以选择 glabals.cpp 定义那些可能也需要定义的符号。
  6. 确保在更新配置后(重新)运行 make。

与仅声明外部常量变量并在不同的 translation-unit 中定义和初始化它们相比,优势在于 constant-propagation 并且具有适当的 compile-time-constants.