我无法理解为什么会抛出对'floor'的未定义引用“:
double curr_time = (double)time(NULL);
return floor(curr_time);
是不是已经将它转换为加倍,这是 floor 收到的?
答案 0 :(得分:7)
答案 1 :(得分:5)
也许是因为你没有与数学库联系?该错误与演员表和数据类型无关,顺便说一句。
答案 2 :(得分:2)
您可能必须明确链接到库。在类UNIX系统上,这通常是“/usr/lib/libm.a”。默认情况下,C标准库应该链接,但数学库(取决于您的系统)没有链接,您可能必须明确链接。 (例如,在Mac OS X上,它默认情况下也链接在我的ubuntu系统上)。
请注意,这与您的包含路径无关。如果您使用类似UNIX的东西,您可能会在“/usr/include/math.h”下找到带有原型声明的标头,您的编译器将始终查找标题。
如果您使用的是gcc,可以直接链接到:
gcc yourfile.c /usr/lib/libm.a -o out
或者使用“-l nameroflibrary ”,如下所示:
gcc yourfile.c -lm -o out
这将在与C标准库相同的目录中查找名为“lib nameoflibrary .a”的库