我在c。
中使用sqrt()时遇到问题我正在尝试做这样的事情:
int a;
a = sqrt(9);
等
我只能使用:
gcc -ansi -Wall -pedantic oneFile.c anotherFile.c thirdFile.c -o outputFileName
如何在不使用-lm命令的情况下进行编译?
是的,我有#include!
有什么方法可以使用sqrt()吗?
由于
答案 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;
}