C 错误:函数和存储大小的隐式声明未知,尽管函数和结构是包含的头文件的成员



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

#include <stdio.h>
#include <dir.h>
#include <dos.h>
struct ffblk ffblk;
int main(){
int result = findfirst("*.*", &ffblk,FA_ARCH);
return 0;
}

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

FFBLK 的存储大小未知

并且findfirst()函数返回:

警告:函数"findfirst"的隐式声明[-隐式函数声明]

如图所示,即使findfirstffblk都是dir.h的成员, 已经包含在内。我正在使用Visual Studio并与GCC一起编译.有人知道代码或头文件出了什么问题吗?

如果你能避免的话,你真的,真的不应该使用来自过时标头(如"dos.h"(的过时 API。 诚实!

不过,如果你坚持...

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

  2. 它记录在这里

  3. 您将看到这个(再次 -过时(API 的参数是struct _finddata_t *fileinfo(而不是struct ffblk(。

更改您的代码,一切都应该编译并运行。

更好的是,更改您的标头(更改为"io.h"和"dir.h"( - 原始代码可能应该编译并运行。

最新更新