0

可能重复:
C 编程 sqrt 函数

我在 C 语言中遇到了一个奇怪的问题。我已将库包含在标题中,例如该pow(x,n)函数也可以正常工作。另一方面,下一个代码根本不运行:

float calcArea(double edgeA){
    double s=edgeA;
    float area = sqrt(s);
    return area;
}

但是当我更改sqrt(s)sqrt(45)(或任何其他自然数)时,它不会产生任何问题。我还sqrt()多次检查了该函数,只要参数是变量,它仍然没有。

任何解决此问题的建议都会有所帮助,在此先感谢

编辑:我正在使用 Eclipse

4

2 回答 2

4

您应该告诉编译器链接数学库。在 Linux 上,您应该使用

   gcc -Wall -g yoursource.c -o yourprog -lm

参数的顺序gcc很重要:首先是源文件,然后是目标文件,然后是从高层到低层的库。

至于为什么使用它不会发生错误sqrt(42)是因为gcc可能会不断折叠并内联它。

于 2012-11-05T08:04:14.280 回答
3

您应该在编译时链接数学库

-lm

您没有说您使用的是哪个编译器,但对于 Visual Studio,您可以尝试以下操作:

http://www.steptools.com/support/stdev_docs/help/settings_vc10.html#link

编辑:对于日食,请参阅帮助

于 2012-11-05T08:03:46.550 回答