为什么 sqrtf 在 debian 或 ubuntu 中不接受变量作为参数?

why sqrtf doesn't accept a variable as argument in debian or ubuntu?

我想使用这个函数,它会将一个变量作为参数,但它不适合我。如果我输入数字它有效但参数中的数字无效。

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

int main(void)
{
  float x;
  x = 7;
  printf("%f", sqrtf(x)); // produces error "undefined reference to `sqrtf'"
}
int main(void)
{
   printf("%f", sqrtf(7)); // works
}
  1. sqrtf(7) 在编译时计算,sqrtf 函数未被调用。 (它“有效”)
  2. sqrtf(x) 计算 运行 次并调用 sqrtf 函数。 (它不“工作” - 即它不 link) https://godbolt.org/z/oY6zfqxd1

您需要针对数学库将 -lm 编译选项添加到 link。如果不这样做,程序将不会 link.