c - 警告 : assignment from incompatible pointer type [enabled by default]

标签 c pointers variable-assignment

终端说这是这一行的警告:

warning: assignment from incompatible pointer type [enabled by default]

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;

}

最佳答案

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

关于c - 警告 : assignment from incompatible pointer type [enabled by default],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25263994/

相关文章:

C++:字段对象可以在不存储指针的情况下知道它的 "parent"吗?

c - 在 makefile 执行期间不创建可执行文件

c++ - 给定两个字谜词。交换一个单词(仅允许交换相邻的字母)以到达另一个单词

c - 学习C - 编译错误分配指针

node.js - 带 Sequelize 的加法和减法赋值运算符

c++ - 如何将值赋值到二维 vector 中,如二维数组

c - 空指针赋值错误 union

C语言中的字符

c - _tcstok (strtok) 跳转到 token 上?

c - 我无法使用链表打印多项式