我不明白为什么这会引发对“地板”的未定义引用“:
double curr_time = (double)time(NULL);
return floor(curr_time);
它不是被铸造成双倍的,这是地板接收的吗?
也许是因为你没有链接到数学库?顺便说一句,该错误与强制转换和数据类型无关。
您可能必须明确链接到库。在类 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”的库