所以这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
float f = .55;
int i;
i = round(f);
}
我遇到的第一个问题是round()函数本身。当这样调用它时:round(foo)没有编译错误。粗略的,这是无用的,因为返回了round()的所需输出。但是当我尝试捕获round()的输出时:
i = round(f)
我得到一个编译时错误:
test.c:(.text+0x1b): undefined reference to `round'
就好像只是尝试分配round()的返回值一样,强制round()不被定义。我在这里读过一些帖子说我应该把-lm传递给GCC,但这没什么区别。
试图从printf调用round()给出了同样的错误,例如:
printf("....", round(f))
这实际上让我很生气,因为所有在线参考文献都说:
int i = round(f)
应该管用。
这是Ubuntu 18.04上最新的GCC。
好吧......所以 - 这当然是我自己的无知。我显然没有将“-lm”添加到参数列表的END中。现在一切正常。