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

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

struct ffblk ffblk;

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

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



然后findfirst()函数返回:



as seen in this image,即使findfirstffblk都是dir.h的成员,Visual Studio都已包括在内。我正在使用GCC并使用ojit_code进行编译。有人知道代码或头文件出了什么问题吗?

最佳答案

如果真的可以避免的话,您真的不应该使用过时的 header (例如“dos.h”)中的过时的API。诚实!

不过,如果您坚持要...

  • 正如dbush指出的那样,实际的(过时的!)API是_findfirst(不是findfirst)。
  • 记录在案的here
  • 您将看到,这个API的参数(同样是-OBSOLETE)是struct _finddata_t *fileinfo(不是struct ffblk)。

  • 更改您的代码,所有内容都应编译并运行。

    更好的方法是,更改 header (分别为“io.h”和“dir.h”),并且原始代码应该可以编译并运行。

    07-25 21:36