无法将dirent-> d_type与DT_DIR进行比较

时间:2017-10-11 17:35:34

标签: c dirent.h

我正在尝试进行简单的比较,以便在读取的文件类型是目录时能够执行某些操作。

示例代码:

int main()
{
  DIR *dir = opendir(".");
  struct dirent *dirent = readdir(dir);
  if (dirent->d_type == DT_DIR)
    //do something
  return 0;
}

这是说:

  

DT_DIR未初始化

当我尝试使用括号时:"DT_DIR"我收到以下错误:

  •   

    比较指针和整数

  •   

    与字符串文字的比较导致未定义的行为

如果我理解正确,我需要将DT_DIR放在char数组中?这是我第一次使用这些结构和功能。

1 个答案:

答案 0 :(得分:3)

DT_DIR不是POSIX的一部分,而是一个glibc扩展。限定 在包含标题之前在顶部#define _GNU_SOURCE获取它(如果你的glibc版本是> = 2.19,则定义_DEFAULT_SOURCE)。事实上,在POSIX的definition of struct dirent.

中甚至没有提到d_type