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

标签 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() 吗?

谢谢

最佳答案

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

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

关于在c中使用sqrt()编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969168/

相关文章:

javascript - JS骗我吗?想要在 C 中实现与 Javascript 中相同的哈希值

c - 头文件结构

Linux/苹果机 : What is good method to determine platform at compile time?

matlab - 如何创建随行索引和数据变化的三角矩阵?

c - GCC 的 sqrt() 编译后如何工作?使用哪种root方法?牛顿-拉夫森?

c - 如何链接三个连续内存块

java - 如何在java中获取偏移值时在空格和特殊字符上分割字符串

ubuntu - 类路径 javac : file not found:

Java Math 未返回正确答案

c - 使用read函数使用C读取大文件(大于4GB),导致问题