gpt4 book ai didi

c - 警告 : implicit declaration of function 'fsync' is invalid in C99

转载 作者:太空狗 更新时间:2023-10-29 15:27:03 27 4
gpt4 key购买 nike

由于某种原因,当我编译我的代码时,编译器找不到 fsync 和 truncate 的原型(prototype)。我明白了:

cc -c -Wall -Wno-overflow  -pedantic -std=c99 -I/Users/matt/Programming/BitEagle_Projects/cbitcoin/include -I/usr/local/ssl/include -I/opt/local/include -O3 -arch i386 -arch x86_64 -D_POSIX_SOURCE -fPIC dependencies/storage/CBBlockChainStorage.c -o build/CBBlockChainStorage.o
dependencies/storage/CBBlockChainStorage.c:154:6: warning: implicit declaration of function 'fsync'
is invalid in C99 [-Wimplicit-function-declaration]
if(fsync(indexAppend)){
^
dependencies/storage/CBBlockChainStorage.c:649:6: warning: implicit declaration of function
'truncate' is invalid in C99 [-Wimplicit-function-declaration]
if (truncate(filename, CBArrayToInt32(data, 0))) {
^

我必须做什么才能删除这些警告?我包括 unistd.h。这是在 OSX 上使用 clang:

$ cc --version
Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix

谢谢。

最佳答案

如果您使用 -std=c99,系统头文件将尝试提供与 C 标准兼容的声明/宏命名空间,其中不包括来自 POSIX 或其他语言的任何附加函数标准或非标准扩展。您需要定义适当的功能测试宏 才能获取它们。例如,将 -D_POSIX_C_SOURCE=200809L 放在命令行或在您的源文件中定义它。

关于c - 警告 : implicit declaration of function 'fsync' is invalid in C99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com