gpt4 book ai didi

c - 需要在 Clang 中使用 -lm 和 pow(),而不是 sqrt()

转载 作者:太空狗 更新时间:2023-10-29 15:26:12 25 4
gpt4 key购买 nike

在 FreeBSD 10.1 上并使用 Clang 版本 3.4.1

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

#include <math.h>
#include <stdio.h>

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

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

cc -lm -o name name.c

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

最佳答案

您的目标是其浮点硬件直接实现 sqrt 的处理器,所有 IEEE-754 兼容单元也是如此。因此,编译器可以直接为 sqrt 生成代码,而不需要链接到库函数。

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

关于c - 需要在 Clang 中使用 -lm 和 pow(),而不是 sqrt(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com