所以我四处寻找这个问题的答案,可能非常简单,但我还没有找到任何答案,所以这里有个问题:
这里的代码工作得很好:
int main(void){
double x;
x=ceil(5.5);
}
但如果我试试这个:
int main(void){
double x = 5.5;
x=ceil(x);
}
我收到此错误消息:
test.c:(.text+0x24):未定义对“ceil”的引用
这是为什么,我如何将变量发送到函数'ceil()',然后将其存储在另一个变量中?
最佳答案
除了包含math.h
,只需在命令末尾写入-lm
即可编译文件。
因为您声明您的程序有时可以工作,所以您可能在不同的时间以不同的方式编译代码,或者进行一些优化。请看一看here(感谢dannas):
存档(静态库)的作用方式不同于共享对象(动态库)。使用动态库时,所有库符号都会进入输出文件的虚拟地址空间,并且链接中的所有其他文件都可以使用所有符号。相反,静态链接只在归档文件中查找加载程序在处理归档文件时已知的未定义符号。
如果在对象文件之前指定数学库(通常是静态库),则链接器不会添加任何符号。
关于c - 如何将ceil()返回的内容存储在变量中(C编程),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33000972/