终端说这是警告:
警告:从不兼容的指针类型分配[启用 默认]
while ((dirzeiger=readdir(dir)) != NULL)
我找不到错误......
void ls () {
struct dirent {
long d_ino;
unsigned short d_reclen;
unsigned short d_namlen;
char *d_name;
};
DIR *dir;
struct dirent *dirzeiger;
if ((dir =opendir("/home/Bernardinho/Schreibtisch")) != NULL)
while ((dirzeiger=readdir(dir)) != NULL)
printf("%s\n",(*dirzeiger).d_name);
}
int main( int argc, char* argv) {
ls();
return 0;
}
答案 0 :(得分:1)
正如@ Mr.32所说,你忘了包含必要的头文件。此外,您似乎重新定义了结构dirent
。因此,dirent
考虑的readdir
与您的dirent
不同,且指针不兼容。
答案 1 :(得分:0)
你忘了包含
#include <dirent.h>
如果没有Header文件,则包含任何带有implicate声明的函数都将返回整数类型。所以readdir()将被视为int的返回类型,并且您将其返回存储在指针中,以便获得该警告。
添加heade文件后,您可以看到没有任何警告。