【发布时间】:2013-02-02 17:12:10
【问题描述】:
我在笔记本电脑上使用了 mingw 和 eclipse 以及 c++98。但是在我的电脑上我有 vs2012。
现在有个小问题,数学库好像完全不一样了。
在 c++98 中,我可以使用 math.h 访问 round 和 M_PI。但是在vs2012中它不再存在了。我进行了google搜索,发现以下参考http://en.cppreference.com/w/cpp/numeric/math/round
但round 不在 cmath 中,也不在 math.h 中。我也找不到M_PI
还有其他数学库吗?
【问题讨论】:
-
对于
round(),请参阅外部参考。 C99 在<math.h>和<tgmath.h>中都有round(),但是MSVC 仍然实现了没有round()的过时的C89 标准。M_PI是一个 POSIX 扩展。缺少函数和宏对我来说并不奇怪。 -
如果您在包含
<math.h>(或<cmath>)之前定义_USE_MATH_DEFINES,则将定义M_PI。默认情况下未定义它们,因为它们不是 C 或 C++ 语言标准的一部分。 Visual C++ 2012 没有定义round函数,它不是 C90 或 C++03 的一部分(通过 C99 标准库,它是 C++11 的一部分,Visual C++ 尚未实现)。