>我正在尝试制作一个测试程序,该程序仅搜索其根文件夹中的任何文件:
#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"的隐式声明[-隐式函数声明]
如图所示,即使findfirst
和ffblk
都是dir.h
的成员, 已经包含在内。我正在使用Visual Studio
并与GCC
一起编译.有人知道代码或头文件出了什么问题吗?
如果你能避免的话,你真的,真的不应该使用来自过时标头(如"dos.h"(的过时 API。 诚实!
不过,如果你坚持...
-
正如 dbush 指出的那样,实际的(过时的!API 是
_findfirst
(不是findfirst
(。 -
它记录在这里
-
您将看到这个(再次 -过时(API 的参数是
struct _finddata_t *fileinfo
(而不是struct ffblk
(。
更改您的代码,一切都应该编译并运行。
更好的是,更改您的标头(更改为"io.h"和"dir.h"( - 原始代码可能应该编译并运行。