使用c中的sqrt()编译错误

时间:2013-07-31 11:32:36

标签: c compilation sqrt

我在c。

中使用sqrt()时遇到问题

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

int a;

a = sqrt(9);

我只能使用:

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

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

是的,我有#include!

有什么方法可以使用sqrt()吗?

由于

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

这样就可以了,没有任何数学库。

答案 2 :(得分:0)

在标题

中使用#include <math.h>

否则使用用户定义功能

答案 3 :(得分: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;
}