数学接口与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