警告:从不兼容的指针类型分配[默认启用]

时间:2014-08-12 12:13:22

标签: c pointers variable-assignment

终端说这是警告:

  

警告:从不兼容的指针类型分配[启用   默认]

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;

}

2 个答案:

答案 0 :(得分:1)

正如@ Mr.32所说,你忘了包含必要的头文件。此外,您似乎重新定义了结构dirent。因此,dirent考虑的readdir与您的dirent不同,且指针不兼容。

答案 1 :(得分:0)

你忘了包含

#include <dirent.h>

如果没有Header文件,则包含任何带有implicate声明的函数都将返回整数类型。所以readdir()将被视为int的返回类型,并且您将其返回存储在指针中,以便获得该警告。

添加heade文件后,您可以看到没有任何警告。

http://codepad.org/2YZWcrVP