c/c++语言开发共享需要在clang中使用-lm和pow(),但不能在sqrt()中使用

在FreeBSD 10.1和使用Clang 3.4.1

现在我已经看到其他线程询问如何使用pow()进行编译 ,但我没有看到有这个问题的线程。 举个例子:

 #include  #include  int main() { float result; result = pow(2,3); printf("%d", result); return 0; } 

现在使用pow() ,我需要发出clang参数-lm。

cc -lm -o name name.c

但是,用sqrt(5);代替pow(2,3) sqrt(5); ,我可以使用cc -o name name.c进行编译。 如果他们都使用math.h ,那为什么pow()需要链接到库? 方面没有:安装gcc进行测试,我根本不需要使用-lm。

    您的目标是浮点硬件直接实现sqrt的处理器,所有符合IEEE-754标准的设备都是如此。 因此,编译器可以直接为sqrt生成代码,而不需要链接到库函数。

    另一方面,浮点硬件通常不提供pow实现,因此它确实需要在库中实现。

      以上就是c/c++开发分享需要在clang中使用-lm和pow(),但不能在sqrt()中使用相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/544738.html

      (0)
      上一篇 2021年1月9日
      下一篇 2021年1月9日

      精彩推荐