首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nftw发出警告

使用nftw发出警告
EN

Stack Overflow用户
提问于 2009-04-23 15:44:31
回答 4查看 4.8K关注 0票数 12

我正在尝试使用nftw来处理某个目录下的一些文件

代码语言:javascript
复制
#include <ftw.h>
#include <stdio.h>

 int wrapper(const char * fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) {
  printf("File %d\n", ftwbuf->base);
  return(0);
} 


int main(int argc, char ** argv) {
    const char *name;
    int flags = 0;
    name = argv[1];
    nftw(name, wrapper, 20, flags);
    return 0;

}

当我编译(gcc kconfig_parser.c -o解析器)时,我得到了这个警告和这个错误..

代码语言:javascript
复制
kconfig_parser.c:5: warning: ‘struct FTW’ declared inside parameter list 
kconfig_parser.c:5: warning: its scope is only this definition or declaration, which is probably not what you want
kconfig_parser.c: In function ‘wrapper’:
kconfig_parser.c:6: error: dereferencing pointer to incomplete type

我已经检查了结构的定义和回调的原型,一些例子,它应该是好的…我做错了什么?(我已经删除了几乎所有的代码来清除它)...

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-23 16:00:07

出于某些原因,Linux仍然使用SUSv1来实现这个API,nftw()仍然被认为是一个扩展。

在Linux manual page中,必须包含以下内容:

代码语言:javascript
复制
#define _XOPEN_SOURCE 500
#include <ftw.h>
票数 12
EN

Stack Overflow用户

发布于 2009-04-23 15:56:21

嗯。你的代码很适合我。也许可以检查一下您的包含路径?虽然这是一个系统头文件,但是很难错过它。或者你是不小心编译了一个没有#include <ftw.h>行的版本?

代码语言:javascript
复制
$ gcc -o ftw ftw.c
$ ./ftw my-directory
File 10
File 11
File 16
File 16
File 16
File 16
File 16
... etc ...

编辑:上面的测试是在Mac上完成的。在一个(现在被删除的)评论中,OP提到了他在Debian上,the man page提到#define _XOPEN_SOURCE 500是必要的,正如Juliano指出的那样。

票数 1
EN

Stack Overflow用户

发布于 2020-01-24 11:00:05

在CentOs版本中,头文件没有使用"#define _XOPEN_SOURCE 500“,我必须在下面这样做,

代码语言:javascript
复制
#define __USE_XOPEN_EXTENDED 1
#include <ftw.h>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/782338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档