-1

我正在尝试制作一个仅在其根文件夹中搜索任何文件的测试程序:

#include <stdio.h>
#include <dir.h>
#include <dos.h>

struct ffblk ffblk;

int main(){
    int result = findfirst("*.*", &ffblk,FA_ARCH);
    return 0;
}

但是当代码编译时,ffblk struct声明返回错误:

ffblk 的存储大小未知

并且findfirst()函数返回:

警告:函数“findfirst”的隐式声明[-Wimplicit-function-declaration]

如图所示,尽管findfirstffblk都是 的成员dir.h,但已包含在内。我正在使用Visual Studio和编译GCC. 有人知道代码或头文件有什么问题吗?

4

1 回答 1

1

如果可以避免的话,你真的真的不应该使用过时的头文件中的过时 API,比如“dos.h”。诚实!

不过,如果你坚持...

  1. 正如 dbush 指出的那样,实际的(过时的!)API 是_findfirst(不是findfirst)。

  2. 它记录在这里

  3. 您会看到这个(再次 - OBSOLETE)API 的参数是struct _finddata_t *fileinfo(不是struct ffblk)。

改变你的代码,一切都应该编译和运行。

更好的是,更改您的标题(更改为“io.h”和“dir.h”) - 原始代码应该可以编译并运行。

于 2018-09-10T02:04:00.383 回答