我在引用 DT_REG 的函数中使用
代码片段是:
DIR * dirp;
struct dirent * entry;
dirp = opendir(path);
if(entry->d_type == DT_REG) { //.... }
在我的 makefile 中,我使用“cc -std=c11 -Wall -Werror -pedantic”。
有什么想法吗?
最佳答案
DT_REG
不是 ISO C11 扩展的一部分。严格设置 -std=c11
仅启用 C11 标准中定义的功能。
您可以使用feature macros启用额外的扩展。如readdir manual提到,您需要 _DEFAULT_SOURCE
宏来启用文件类型常量。
您可以在包含 dirent.h
之前在源代码中执行此操作
#define _DEFAULT_SOURCE
#include <dirent.h>
或通过命令行作为编译器选项
cc -std=c11 -D_DEFAULT_SOURCE -Wall -Werror -pedantic
关于c - 即使在函数中使用 <dirent.h> 头文件,“DT_REG 未声明”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69689586/