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

can't compare dirent->d_type to DT_DIR

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

示例代码:

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

这里说:

DT_DIR not initialised

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

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

DT_DIR 不是 POSIX 的一部分,而是 glibc 扩展。定义 #define _GNU_SOURCE 在包含 headers 之前位于顶部以获取它(或者定义 _DEFAULT_SOURCE 如果您的 glibc 版本 >= 2.19)。事实上 d_type 甚至没有在 POSIX 的 definition of struct dirent.

中提及