在命名空间中定义双精度常量的最佳方法是什么?

2024-02-06

在命名空间中定义双精度常量的最佳方法是什么?例如

// constant.h
namespace constant {
    static const double PI = 3.1415926535;
}

// No need in constant.cpp

这是最好的方法吗?


I'd say:

-- 在 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;
}

请注意,如果您的常量没有简单的类型并且您位于共享库中,我建议避免在全局/命名空间范围内为其提供内部链接,我不知道这方面的理论,但实际上它确实倾向于随机把事情搞乱:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在命名空间中定义双精度常量的最佳方法是什么? 的相关文章

随机推荐