C++ 我应该在哪里存储项目常量定义/声明
我有一个项目,例如游戏应用程序。我在那里有很多课。那么,我应该在哪里存储游戏参数的初始变量声明/定义 例如,我有一个“平面”,它具有初始参数C++ 我应该在哪里存储项目常量定义/声明,c++,constants,C++,Constants,我有一个项目,例如游戏应用程序。我在那里有很多课。那么,我应该在哪里存储游戏参数的初始变量声明/定义 例如,我有一个“平面”,它具有初始参数速度,高度,e.t.c. 在游戏开始后,这个参数在某种程度上取决于游戏过程,并且在时间参数上的变化我也应该存储在一些文件中。 其他类别的情况相同,例如初始分数/燃油/健康。。。 还有一些constexpr参数,如每秒增加分数的数量 那么,我应该在哪里存储所有这些参数呢?对此我有一些想法: 如果我将其存储在Parameters.h文件中,如下所示: 那我的编译
速度
,高度
,e.t.c.在游戏开始后,这个参数在某种程度上取决于游戏过程,并且在时间参数上的变化我也应该存储在一些文件中。
其他类别的情况相同,例如初始
分数
/燃油
/健康
。。。
还有一些constexpr
参数,如每秒增加分数的数量
那么,我应该在哪里存储所有这些参数呢?对此我有一些想法:
Parameters.h
文件中,如下所示:Plane.h
-modify,然后打开Window.h
。。e、 t.c大型项目游戏如何解决这个问题(这意味着他们正在测试/开发-应该少构建并保持简单的架构)?像下面的答案一样使用
extern
是否是一种好的做法?您可以在标题中将变量声明为extern
,并使用带有实际值的.cpp
参数
namespace WINDOW_PARAM {
extern const unsigned int WIDTH;
extern const unsigned int HEIGHT;
}
namespace PLANE_PARAM {
extern const char *TEXTURE_PATH;
}
参数.cpp
namespace WINDOW_PARAM {
const unsigned int WIDTH = 1000;
const unsigned int HEIGHT = 1000;
}
namespace PLANE_PARAM {
const char *TEXTURE_PATH = "../example.png";
}
现在,您可以在任何地方包含“Parameters.h”。更改
参数.cpp
中的值只会重新编译该文件。如果它们是经常更改的参数,那么#2是最好的方法。“我应该如何处理它”——这是相当主观的。有关如何使这个问题更具建设性的建议(例如,更多地关注优点和缺点)。@JaMiT现在可以了吗?@Hattedroster使用extern
like作为答案是一种很好的做法?@Mike询问现有项目中做了什么比询问项目中应该做什么更好。因此,是的,有改进。但是,您的项目不是这些项目。如果您知道为什么做出这些选择,您将受益匪浅,这样您就可以评估这些原因是否适用于您的项目。使用extern
真的是一种好的做法吗?当然是在名称空间中,但我有一些疑问。另外,在这种情况下使用constexpr
根据我的经验,在所有情况下都应该谨慎使用globals。但对于常数,它有时是有意义的。一般来说,我不认为extern
是个坏主意,但它有利弊。这里的优点是,您可以更改值,而无需重新编译依赖它们的TU。您已经指出的缺点,这也意味着编译器无法使用该值进行优化。我认为这取决于你的项目中什么更重要。
namespace WINDOW_PARAM {
const unsigned int WIDTH = 1000;
const unsigned int HEIGHT = 1000;
}
namespace PLANE_PARAM {
const char *TEXTURE_PATH = "../example.png";
}