C ++中的数字常量

时间:2014-04-29 15:05:57

标签: c++

  1. C ++标准的C库M_PI中是否有math.h之类的数字常量makros?
    我在reference

  2. 中找不到它们
  3. 定义自定义常量的最佳方法是什么? 带有constants.hpp的{​​{1}}是否具有特殊的命名空间是一个很好的解决方案?

  4. 如果问题1的makros确实存在,我是否应该更喜欢它们的可读性或者为了类型安全而定义我自己的常量(如2或更好的方式)?

3 个答案:

答案 0 :(得分:2)

C标准和C ++标准都没有定义常量M_PI

在常量定义中使用关键字static是没有意义的,因为默认常量具有内部链接。

在定义常量之前,您应该查看POSIX标准。

答案 1 :(得分:2)

你可以使用boost -

#include <boost/math/constants/constants.hpp>

using namespace  boost::math::constants;

double circumference(double radius)
{
    return radius * 2 * pi<double>();
}

请参阅documentation

答案 2 :(得分:0)

  1. M_PI不标准。

  2. 我认为这更像是一种偏好。我见过以下方法:

    #define PI 3.1415
    const double PI = 3.1415;
    const double kPi = 3.1415;
    
  3. 同样,我认为这是一种偏好,或者它可能取决于你实际在做什么。也试试这个:

    #define _USE_MATH_DEFINES
    #include <math.h>