【发布时间】:2016-10-19 12:14:59
【问题描述】:
在我的学校项目中,我们正在制作一个带有几个标志的复制程序。复制后我需要截断一个 infile。 这是它的代码:
int a_trunc(const char* infile, const char* size){
int s = strtol(size, NULL, 10);
truncate(infile, s);
return 0;
}
GCC 返回错误:'函数'truncate'的隐式声明'。
我包含了 sys/types.h 和 unistd.h。
我正在使用标志进行编译: -std=c99 -Wall -Werror
感谢您的宝贵时间。
【问题讨论】:
-
你试过用标志 -std=gnu99 编译吗?
-
也可以试试 -std=c99 -D_GNU_SOURCE
-
在“GNU 模式”
-std=gnu90(这是 GCC 版本 5 的默认设置)下运行的 GCC 编译器会在标准库中转储各种非标准垃圾。 C 标准不允许这样做,因此当您告诉它将代码编译为标准 C 时,它会删除非标准垃圾。在这种情况下,它可能会删除太多。 POSIX 往往会与标准 C 发生冲突,这可能就是原因。