您的位置:首页 > 其它

"\include\qwt\qwt_math.h(105): error C2065: “M_PI_2”: 未声明的标识符"

2017-09-14 00:04 2481 查看
解决方法:

    1) 在VS2010上使用Qwt时,需要在“项目”右键单击,选择“属性”,然后在“C/C++”中的“预处理器”配置组中的“预处理器定义”中加入“_USE_MATH_DEFINES”。

    2)在相应的头文件中添加  #define _USE_MATH_DEFINES

 

原因如下:

    在qwt_math.h中解释如下: 

#if defined(_MSC_VER)
/*

  Microsoft says:

  Define _USE_MATH_DEFINES before including math.h to expose these macro

  definitions for common math constants.  These are placed under an #ifdef

  since these commonly-defined names are not part of the C/C++ standards.

*/
#define _USE_MATH_DEFINES 1

#endif

 

如果在“预处理器定义”中添加_MSC_VER,有可能会导致其他第三方库无法编译通过。

 而VS 的头文件math.h中也解释如下: 

#if defined(_USE_MATH_DEFINES) && !defined(_MATH_DEFINES_DEFINED)

#define _MATH_DEFINES_DEFINED

/* Define _USE_MATH_DEFINES before including math.h to expose these macro

 * definitions for common math constants.  These are placed under an #ifdef

 * since these commonly-defined names are not part of the C/C++ standards.

 */

/* Definitions of useful mathematical constants

 * M_E        - e

 * M_LOG2E    - log2(e)

 * M_LOG10E   - log10(e)

 * M_LN2      - ln(2)

 * M_LN10     - ln(10)

 * M_PI       - pi

 * M_PI_2     - pi/2

 * M_PI_4     - pi/4

 * M_1_PI     - 1/pi

 * M_2_PI     - 2/pi

 * M_2_SQRTPI - 2/sqrt(pi)

 * M_SQRT2    - sqrt(2)

 * M_SQRT1_2  - 1/sqrt(2)

 */

#define M_E        2.71828182845904523536

#define M_LOG2E    1.44269504088896340736

#define M_LOG10E   0.434294481903251827651

#define M_LN2      0.693147180559945309417

#define M_LN10     2.30258509299404568402

#define M_PI       3.14159265358979323846

#define M_PI_2     1.57079632679489661923

#define M_PI_4     0.785398163397448309616

#define M_1_PI     0.318309886183790671538

#define M_2_PI     0.636619772367581343076

#define M_2_SQRTPI 1.12837916709551257390

#define M_SQRT2    1.41421356237309504880

#define M_SQRT1_2  0.707106781186547524401

#endif  /* _USE_MATH_DEFINES */ 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息