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

时间:2014-11-07 17:29:03

标签: c c99

我想在我的代码中使用ftruncate函数。我必须使用选项std = c99进行编译。我收到警告:

In function ‘test’:
warning: implicit declaration of function ‘ftruncate’ [-Wimplicit-function-declaration]

我想在互联网上找到任何可以解决这个问题但我没有成功的解决方案。

我使用ftrucnate是因为我想在锁定(flock)之后清除已打开文件的内容。

2 个答案:

答案 0 :(得分:5)

由于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

答案 1 :(得分:3)

FatalError的回答对我不起作用。大部分你需要做的就是:

#include <unistd.h>