无法将 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"
我收到以下错误:
comparing pointer and integer
comparison with string literal results in undefined behavior
如果我理解正确,我需要将 DT_DIR
放入 char
数组中?这是我第一次使用这些结构和函数。
宏 DT_DIR
不是 POSIX 的一部分,而是 glibc 扩展。定义
#define _GNU_SOURCE
在包含 headers 之前位于顶部以获取它(或者定义 _DEFAULT_SOURCE
如果您的 glibc 版本 >= 2.19)。事实上 d_type
甚至没有在 POSIX 的 definition of struct dirent
.
中提及
我正在尝试做一个简单的比较,以便在读取的文件类型是目录时能够执行某些操作。
示例代码:
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"
我收到以下错误:
comparing pointer and integer
comparison with string literal results in undefined behavior
如果我理解正确,我需要将 DT_DIR
放入 char
数组中?这是我第一次使用这些结构和函数。
宏 DT_DIR
不是 POSIX 的一部分,而是 glibc 扩展。定义
#define _GNU_SOURCE
在包含 headers 之前位于顶部以获取它(或者定义 _DEFAULT_SOURCE
如果您的 glibc 版本 >= 2.19)。事实上 d_type
甚至没有在 POSIX 的 definition of struct dirent
.