需要有关在整个项目中共享常量值的建议
Need suggestion on sharing constant values throughout my project
我目前正在开发一款游戏并使用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;
}
相关文章:
- 在cuda线程之间共享大量常量数据
- 多个"常量引用"变量可以共享同一个内存吗?
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 在多线程函数中返回共享的常量指针会导致计时问题吗?
- 指向静态常量对象的共享指针?
- 从共享指针强制转换为共享指针到常量
- 为什么我们需要传递常量共享指针作为引用?
- 用于共享常量的头文件或库
- 如何初始化共享复杂初始化代码的多个常量成员变量?
- 我应该在源文件之间共享的常量的定义中添加关键字"extern"吗
- 在 c++ 中实现共享指针时如何处理常量对象
- 编译单元之间共享的全局常量对象
- 共享指针和常量正确性
- C++如何在cpp之间与extern共享常量-错误:指定了存储类
- 当使用extern在文件之间共享常量时,为什么定义中需要extern
- 场景图、共享指针和常量传播
- C++11在stl容器中共享指针常量
- c++常量放在哪里?在一个分离/共享的头文件(main.h)中
- 无锁重新加载和共享常量对象
- 将函数返回的共享指针绑定到常量的左值引用是否是一种好的做法