【发布时间】:2023-01-14 08:45:47
【问题描述】:
我在我的项目中包含了 math.h 和 cmath。
我正在研究 math.h 和 cmath 之间的区别。
我相信 std::cos 会使用 cmath,但一些文献似乎表明情况可能并非如此。
如何指定使用来自 math.h 而不是 cmath 的 cos 函数?
#include <math.h>
#include <cmath>
...
double x;
int maxv = 1000000;
for(int i = 0; i < maxv; i++)
{
x = static_cast<double>(i) / static_cast<double>(maxv);
printf("diff = %lf\n", cos(x) - std::cos(x)); // math.h vs cmath
}
【问题讨论】:
-
要包含哪个头文件取决于您的语言。
-
如果
cos()只是由一个普通的 c 头文件绘制,它应该作为::cos()驻留在全局命名空间中。 -
我想你可以做
::cos(),但我很想知道你为什么需要这个?因为std::cos()和 Ccos()可能是相同函数的不同名称。 -
我们在我们的项目中同时使用了这两个库,但是根据 linux 的风格,我们似乎得到了不同的返回值。因此,“cos”函数可能会从不同的库中选取,具体取决于。所以我想比较一个小代码中的值,但需要通过 cmath 调用 math.h,但不确定如何
-
您能否发布显示您如何获得不同结果的代码?我的猜测是您正在使用不同的重载。
标签: c++