gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:34 27 4
gpt4 key购买 nike

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

示例代码:

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 在包含 header 之前位于顶部以获取它(或者定义 _DEFAULT_SOURCE 如果您的 glibc 版本 >= 2.19)。事实上 d_type 甚至没有在 POSIX 的 definition of struct dirent. 中被提及

关于无法将 dirent->d_type 与 DT_DIR 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com