如何处理“警告:内联函数`* stat64`声明但从未定义”在gcc中支持gnu99

时间:2012-10-29 11:21:50

标签: c linux gcc stat gnu99

我在stat.h中加载了foo.c,内容如下:

#include <sys/stat.h> 

当我按如下方式编译时:

gcc -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -DUSE_ZLIB -DUSE_BZLIB -O0 -g -Wformat -Wall -Wswitch-enum -Wextra -std=gnu99 -DDEBUG=1 -c foo.c -o objects/foo.o -I...
gcc -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -DUSE_ZLIB -DUSE_BZLIB -O0 -g -Wformat -Wall -Wswitch-enum -Wextra -std=gnu99 -DDEBUG=1 objects/foo.o -o ../bin/debug.foo ../lib/libfoo.a ... -lbz2 -lz

我收到以下警告,这些警告特定于<sys/stat.h>个函数:

In file included from foo.c:15:0:
/usr/local/gcc-4.7.2/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/include-fixed/sys/stat.h:317:16: warning: inline function `lstat64` declared but never defined [enabled by default]
/usr/local/gcc-4.7.2/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/include-fixed/sys/stat.h:255:16: warning: inline function `fstat64` declared but never defined [enabled by default]
...

如何修复这些警告中引用的问题?在我使用-std=gnu99迁移到C99支持之前,这似乎不是问题,但我不确定原因。谢谢你的任何建议。

1 个答案:

答案 0 :(得分:9)

添加-fgnu89-inline标志通过在C99模式下启用“内联函数的传统GNU语义”来修复警告。