需要有关在整个项目中共享常量值的建议

Need suggestion on sharing constant values throughout my project

本文关键字:常量 共享 项目      更新时间:2023-10-16

我目前正在开发一款游戏并使用C++。我需要一些常量值,这些值必须全局可用于我的所有项目文件。目前我处理这个问题的方式是我有一个名为 Constants.h 的头文件,它声明了所有内容static const typedef name = value。此文件包含在需要这些值的每个项目文件中。

我面临的问题是,随着我的项目规模的增加,构建时间也会增加。我理解为什么会发生这种情况,尽管当我第一次开始我的项目时似乎可行,但现在它已成为一个问题。

你能建议我在我的项目中处理这样的事情的另一种方法吗?谢谢。

与其定义静态变量,为什么不直接声明它们,然后在源文件中定义它们呢?

所以在头文件中

extern const int some_global_const;

并在源文件中

const int some_global_const = 1;

我之前使用过的另一个系统是拥有某种属性系统,其中您有一个键值对的"映射"(通常使用 例如 std::map在引擎盖下),其中键是一个字符串,值是可以转换为任何其他类型的东西。

然后,您可以执行类似Config::get("some_global_const")来获得财产的操作。

这可以用于设置编译时属性,以及在运行时读取属性。

对于游戏,我建议将全局常量放入配置文件中,在启动时读取它并使它们在属性系统中可用。

这样,将来您将非常灵活,并且可以轻松地更改和测试不同的值而无需编译,当您的项目开始变得非常大时,这一点非常重要。

你可以把它们放在一个静态类中。

全局.h

class Globals
{
public:
    static const int something;
};

全局.cpp

#include "Globals.h"
const int Globals::something = 10;

其他源文件:

#include "Globals.h"
void f()
{
    int x = Globals::something;
}