gpt4 book ai didi

c++ - 在哪里放置全局域特定常量(以及如何放置)?

转载 作者:行者123 更新时间:2023-11-27 22:30:08 25 4
gpt4 key购买 nike

我有一个 C++ 代码,它是一个物理模拟工具。

我想存储一些物理常量、不同单位集之间的转换因子,以及一些更多应用程序特定的常量(例如像 enum Planes {X=0, Y=1} 这样的定义) 并且我希望能够从我的代码中的任何位置访问它们。

最好的方法是什么?

我认为一种方法是创建一个命名空间命名空间常量(然后可以是我的主命名空间中的嵌套命名空间),其中包含嵌套的命名空间(如“常量”、“单位”等)。 ).

你会这样做吗?

如果我使用该方法,我是否必须将其作为一个头文件并将其包含在所有位置?

如果我理解正确的话,全局范围内命名空间中的变量具有static 链接,但没有external 链接。那么如果我想在不包含文件的情况下使用它们,我还必须声明它们 extern ?

如你所见,我对此有点困惑......

最佳答案

在大多数情况下,命名空间常量是可行的方法。

If I use that method, do I have to make it a header file and include it everywhere ?

是的,或者不是无处不在,但只有在真正使用它的地方。

If I understand correctly the variables in the namespace at global scope have static linkage, but no external linkage. Then if I want to use them without including a file, I also have to declare them extern ?

是的,你必须那样做:

// header 

namespace modulename
{
// maybe add another namespace to specify that you have constants, but taste-dependant

namespace domain // like maths or physics
{
extern const Number THIS_NUMBER; // have to be defined in the cpp
extern const int THAT_NUMBER = 256; // if it's int-based type, you can define it -here - BUT DON'T IF IT CAN BE CHANGED : all files including this one would have to be recompiled at each value change!!
}
}

// .cpp, where you have the definitions

namespace modulename
{
namespace domain // like maths or physics
{
const Number THIS_NUMBER = Number( 256.42f ); // definition - static is implicit
}
}

关于c++ - 在哪里放置全局域特定常量(以及如何放置)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3701158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com