在命名空间中定义双常量的最佳方法是什么?例如
// constant.h
namespace constant {
static const double PI = 3.1415926535;
}
// No need in constant.cpp
这是最好的方式吗?
答案 0 :(得分:6)
我会说:
- 在c ++ 14中:
namespace constant
{
template <typename T = double>
constexpr T PI = T(3.1415926535897932385);
}
- 在c ++ 11中:
namespace constant
{
constexpr double PI = 3.1415926535897932385;
}
- 在c ++ 03中:
namespace constant
{
static const double PI = 3.1415926535897932385;
}
请注意,如果你的常量没有一个简单的类型,并且你在共享库中,我会建议避免在全局/命名空间范围内给它内部链接,我不知道关于这个的理论,但在实践中它往往会随意乱搞:)