引入math头文件后调用ceil函数出现未定义引用错误
问题:引入math.h后调用ceil函数出现未定义引用错误
已引入math.h头文件,但调用ceil函数时抛出未定义引用错误,代码如下:
#include <stdio.h> #include <math.h> int main() { double num = 8.33; int result; result = ceil(num); printf("Ceiling integer of %.2f = %d", num, result); return 0; }
编译时得到的错误信息:
/usr/bin/ld: /tmp/ccG3j9iB.o: in function `main': maximumRebounding.c:(.text+0x1f): undefined reference to `ceil' collect2: error: ld returned 1 exit status
解决方案
这是因为C语言的数学库(libm)不会被编译器自动链接,即便你已经包含了math.h头文件。编译代码时需要手动指定链接数学库,添加-lm参数。
正确的编译命令示例:
gcc maximumRebounding.c -o maximumRebounding -lm
另外,ceil函数的返回值是double类型,直接赋值给int变量会发生隐式类型转换,若要代码更严谨,可以显式转换:
result = (int)ceil(num);
内容的提问来源于stack exchange,提问作者Harshit Singh
相关产品推荐
相关产品推荐

