数学接口与C++中的cMath
Math interface vs cMath in C++
在我的构建系统MacOS 10.6.3上,用于POSIX数学库的接口是math.h,但在我的目标系统上,接口文件的名称是cmath.h。在学校,我们使用cmath,我想确保我的项目在提交时编译,这是如何实现的。学校的服务器和工作站是运行WindowsXP的x86。GCC在这两个平台上都可用。
在C++标准中,数学库函数定义在两个标头中:
<cmath>
在名称空间std
(例如std::sin
)中包含它们,而
<math.h>
在全局名称空间中包含它们(所以只有sin
)。
两者之间还有进一步的区别:而<math.h>
包含了所有具有不同类型的不同名称的C数学函数,例如
double sin(double);
float sinf(float);
long double sinl(long double);
等等。,<cmath>
包含等过载功能
namespace std {
double sin(double);
float sin(float);
long double sin(long double);
}
等等。(C++库可能另外从<cmath>
导出sinf
,但在可移植程序中不能依赖于此。)
最后,来自C标准库的fabs
、fabsf
和fabsl
函数已经成为<cmath>
中std::abs
的过载。
虽然这两个标头都在标准中,但您应该更喜欢<cmath>
,因为<math.h>
只是为了与预标准C++和C.向后兼容
在标准C++中没有<cmath.h>
这样的东西。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++中的"inline"关键字
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- VS 2017 中的标头 cmath 智能感知错误
- cmath精度误差中的楼层函数
- C++标准是否需要"#include < math.h>"来定义""中的"abs"重载<cmath>?
- cmath's pow() 在 GCC 中的正确性
- c++ sans cmath 库中的 GCD 函数
- 在 Visual Studio 的即时窗口中访问'cmath'函数
- pow()在cmath中的实现和高效替换
- 数学接口与C++中的cMath