c - 如何在没有警告的情况下在c99中使用ftruncate

标签 c c99

我想在我的代码中使用 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/

相关文章:

检查输入是否仅在 C 中包含数字

c - 结构本身正在改变值(value)?

c - C99 宏中的循环构造

c - 发生错误时,scanf 返回 1 而不是 0

用于 MS 编译器的 C99 fenv.h

c - foo() 的用例是什么(意味着 foo 有未知数量的参数)?

c - 数组下标的类型为 'char'

c - 在 linux 中编译的以下 c 代码中的段错误

c - 带有 sighup 的信号处理程序

不使用数组将十进制转换为二进制