如果读取的文件类型是目录,我正在尝试做一个简单的比较,以便能够做一些事情。
示例代码:
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数组?这是我第一次使用这些结构和函数。
该宏DT_DIR不是 POSIX 的一部分,而是一个 glibc 扩展。#define _GNU_SOURCE在包含标题之前在顶部定义
以获取它(或定义_DEFAULT_SOURCE您的 glibc 版本是否 >= 2.19)。事实上d_type甚至没有POSIX的提到的定义struct dirent。