【问题标题】:how to define which library to perform cos x如何定义执行哪个库 cos x
【发布时间】: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() 和 C cos() 可能是相同函数的不同名称。
  • 我们在我们的项目中同时使用了这两个库,但是根据 linux 的风格,我们似乎得到了不同的返回值。因此,“cos”函数可能会从不同的库中选取,具体取决于。所以我想比较一个小代码中的值,但需要通过 cmath 调用 math.h,但不确定如何
  • 您能否发布显示您如何获得不同结果的代码?我的猜测是您正在使用不同的重载。

标签: c++


【解决方案1】:

尝试使用std::math::cos,我不是 100% 确定这是否是解决方案,但我认为这是如何在 cpp 中完成的

【讨论】:

  • 我看到的 math.h 或 cmath 无法识别 std::math::cos
  • 不要使用 math.h,使用 cmath。 cmath -> C++,math.h -> C。它们本质上是相同的库,但 C 没有命名空间。所以使用cmath。
  • 在包含哪些功能以及为什么我们必须同时包含两者方面存在差异。但对共同功能的评估也可能存在差异???
  • @jdl 我可以从那里获得主要上下文,但我认为最好链接整个帖子。总而言之,如果您可以编辑其中一个库,则也可以重命名这些函数。 stackoverflow.com/questions/678254/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 2020-02-16
相关资源
最近更新 更多