-1

我在 c 中使用 sqrt() 时遇到问题。

我正在尝试做这样的事情:

int a;

a = sqrt(9);

ETC

我被限制使用:

gcc -ansi -Wall -pedantic oneFile.c anotherFile.c thirdFile.c -o outputFileName

如何在不使用 -lm 命令的情况下进行编译?

是的,我有 #include !

有什么办法可以解决这个问题并且仍然使用 sqrt()?

谢谢

4

4 回答 4

2

没有-lm. 这是链接器针对内置数学库进行编译的指令。光说是不够的#include <math.h>,因为那只是一个头文件——里面没有代码,它只是告诉编译器你正在使用的函数是什么样的。您仍然需要将该函数的实现实际放入您的代码中,并-lm基本上告诉链接器look in libm, check to see if it has any functions that we haven't found yet。如果您不查看那里,您将永远无法实际执行sqrt,因为代码根本不在您的程序中。

如果您正在处理家庭作业并且仅限于使用该命令行,那么您的部分作业可能不使用数学库中的任何内容,因此您可能需要考虑另一种方法。

于 2013-07-31T11:43:17.933 回答
0

#include <math.h>在标题中使用

否则使用用户定义功能

于 2013-07-31T13:06:53.127 回答
0

如果您不想使用库,请尝试使用此功能。

Sq_root(n)
{
    count=0;
    int i = 0;
    for(i=1;sum<=n;i+=2)
    {
        sum+=i;
        count++;
    }
    return (count);
}

这将起作用,无需任何数学库。

于 2013-07-31T11:44:32.387 回答
0
int int_sqrt(int x){
    int s, t;

    s = 1;  t = x;
    while (s < t) {
        s <<= 1;
        t >>= 1;
    }

    do {
        t = s;
        s = (x / s + s) >> 1;
    } while (s < t);

    return t;
}
于 2013-07-31T22:11:31.507 回答