gpt4 book ai didi

c - 这是在线 C 编译器 gcc-7.2.0 的故障吗?

转载 作者:行者123 更新时间:2023-11-30 19:06:26 25 4
gpt4 key购买 nike

在名为 jdoodle 的在线 C 编译器上,我尝试了下面这个简单的片段:

#include<math.h>
#include<stdio.h>

int main(void)
{
double f = 1.2;
//printf("%f\n", ceil(f));
printf("%f\n", ceil(1.2));
return 0;
}

它打印:

2.000000

这是我所期望的。

但是当我将代码更改为:

printf("%f\n", ceil(f));  
//printf("%f\n", ceil(1.2));

编译器提示:

/tmp/ccv6kz5w.o: In function `main':
jdoodle.c:(.text+0x23): undefined reference to `ceil'
collect2: error: ld returned 1 exit status

man page for ceil() 来看,它相当简单明了。这需要 double变量作为唯一的参数。

当我将编译器版本从 7.2.0 更改为 5.3.0 时,两个代码都成功编译并生成了预期的输出。

为什么更新版本的编译器会提示它呢?

如果编译器的提示是正确的,谁能告诉我为什么 ceil(f);这将是一段有问题的代码,因此 gcc-7.2.0 不认为它有效,令人惊讶地将“ undefined reference 错误”分配给有效的库函数?

更新:我尝试了与 codechef online compiler 相同的片段使用C-GCC6.3,它可以正常编译并生成预期的输出。

最佳答案

man page for ceil(3)记录:

you need to #include <math.h>

你应该

Link with -lm.

您忘记配置在线编译器以链接 -lm ;也许您正在使用的不提供这样的选项。

我建议在您自己的计算机上编译。

关于c - 这是在线 C 编译器 gcc-7.2.0 的故障吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com