我目前正在开发游戏并使用C ++。
我需要一些常量值,这些值必须全局可用于我的所有项目文件。目前我处理这个的方式是我有一个名为Constants.h的头文件,它声明了所有static const typedef name = value
。
此文件包含在需要这些值的每个项目文件中。
我面临的问题是我的项目规模增加,因此构建时间也增加了。我明白为什么会发生这种情况,虽然当我第一次开始我的项目似乎可行时,它现在已成为一个问题。
你能否建议我在我的项目中采用另一种方式来处理这样的事情? 谢谢。
答案 0 :(得分:3)
不是定义静态变量,为什么不只是声明它们,然后在源文件中定义它们呢?
所以在头文件中
extern const int some_global_const;
在源文件中
const int some_global_const = 1;
我以前使用的另一个系统是拥有某种属性系统,你有一个键值对的“地图”(通常使用引擎盖下的std::map
),其中键是一个字符串,值可以转换为任何其他类型。
然后,您可以执行Config::get("some_global_const")
之类的操作来获取房产。
可以这样做以设置编译时属性,并在运行时读取属性。
答案 1 :(得分:1)
对于游戏,我建议将全局常量放入配置文件中,在启动时读取它,并使它们在属性系统中可用。
这样,将来你会非常灵活,你可以轻松地改变和测试不同的值而不需要编译,当你的项目开始变得非常大时,这是非常重要的。
答案 2 :(得分:0)
您可以将它们放在静态类中。
Globals.h
class Globals
{
public:
static const int something;
};
Globals.cpp
#include "Globals.h"
const int Globals::something = 10;
其他源文件:
#include "Globals.h"
void f()
{
int x = Globals::something;
}