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

rai*_*der 2 c dirent.h

如果读取的文件类型是目录,我正在尝试做一个简单的比较,以便能够做一些事情。

示例代码:

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

这里说:

DT_DIR 未初始化

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

  • 比较指针和整数

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

如果我理解正确,我需要放入DT_DIR一个char数组?这是我第一次使用这些结构和函数。

P.P*_*.P. 8

该宏DT_DIR不是 POSIX 的一部分,而是一个 glibc 扩展。#define _GNU_SOURCE在包含标题之前在顶部定义 以获取它(或定义_DEFAULT_SOURCE您的 glibc 版本是否 >= 2.19)。事实上d_type甚至没有POSIX的提到的定义struct dirent