我正在尝试进行简单的比较,以便在读取的文件类型是目录时能够执行某些操作。
示例代码:
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
数组中?这是我第一次使用这些结构和功能。
答案 0 :(得分:3)
宏DT_DIR
不是POSIX的一部分,而是一个glibc扩展。限定
在包含标题之前在顶部#define _GNU_SOURCE
获取它(如果你的glibc版本是> = 2.19,则定义_DEFAULT_SOURCE
)。事实上,在POSIX的definition of struct dirent
.
d_type