【发布时间】:2020-10-04 11:53:18
【问题描述】:
我想打开一个文件并设置它的大小,这样我就可以使用 mmap 来写入它。
我发现我可以使用函数“truncate”/“ftruncate”。不幸的是,当我包含
错误:函数“截断”的隐式声明
我在网上看到我应该使用 gnu 或类似的东西,但这是用于学校项目,我们必须使用 -std=c99 进行编译。
还有其他选择吗?
【问题讨论】:
-
使用
-std=gnu99也许没人注意到:) -
在命令行中添加
-D_XOPEN_SOURCE=700,或在第一个系统#include之前添加等效的#define,以激活POSIX(和X/Open)功能。 -
@JonathanLeffler 很好发现,不过我猜仍然是一种解决方法。
-
如果您想将 POSIX 函数与严格的符合标准的编译器一起使用,您应该这样做。使用
-std=c99使 GCC 成为更接近标准的编译器。使用-std=gnu99可以有效地启用大量扩展,包括 POSIX 函数。另一种选择是显式声明truncate()。