我想在我的代码中使用 ftruncate 函数。我必须使用选项 std=c99 进行编译。我收到警告:
In function ‘test’:
warning: implicit declaration of function ‘ftruncate’ [-Wimplicit-function-declaration]
我试图在互联网上找到任何可以解决这个问题的解决方案,但我没有成功。
我使用 ftrucnate 是因为我想在锁定 (flock) 后清除已打开文件的内容。
最佳答案
由于 ftruncate()
不是标准的 C 函数,并且您要求执行标准,因此您需要定义适当的功能测试宏(参见 feature_test_macros(7)
)。
来自 ftruncate(2)
联机帮助页:
ftruncate(): _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || /* Since glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L
换句话说,要公开 ftruncate()
函数,您必须定义这些宏之一,例如:
gcc -c -std=c99 -D_XOPEN_SOURCE=500 myfile.c
关于c - 如何在没有警告的情况下在c99中使用ftruncate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806764/