我想在我的代码中使用ftruncate函数.我必须使用选项std = c99进行编译.我收到警告:
In function ‘test’:
warning: implicit declaration of function ‘ftruncate’ [-Wimplicit-function-declaration]
Run Code Online (Sandbox Code Playgroud)
我在互联网上发现可以解决这个问题的任何解决方案,但我没有成功.
我使用ftrucnate是因为我想在锁定(flock)后清除打开文件的内容.
由于ftruncate()不是标准的C函数,并且您已经要求执行标准,因此需要定义相应的功能测试宏(请参阅参考资料feature_test_macros(7)).
从ftruncate(2)联机帮助页:
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)