其他分享
首页 > 其他分享> > 数学接口与C中的cMath

数学接口与C中的cMath

作者:互联网

我的构建系统MacOS 10.6.3上用于POSIX数学库的接口是math.h,但是在我的目标系统上,接口文件的名称是cmath.h.在学校我们使用cmath,我想确保我的项目在交付时编译,这是如何实现的.学校的服务器和工作站是运行Windows XP的x86. GCC可在两个平台上使用.

解决方法:

在C标准中,数学库函数在两个标题中定义:

<cmath>

包含它们在命名空间std(例如std :: sin)中,而

<math.h>

在全局命名空间中包含它们(所以只是罪恶).

两者之间还存在进一步的差异:而< 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.

没有< cmath.h>这样的东西.在标准C中.

标签:c,gcc,cmath
来源: https://codeday.me/bug/20190927/1822974.html