我用的是<头文件中的函数,我引用DT_REG,然而,我得到错误,说"'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标准中定义的特性。
你可以使用特性宏来启用额外的扩展。正如readdir手册中提到的,您需要_DEFAULT_SOURCE
宏来启用文件类型常量。
在包含dirent.h
#define _DEFAULT_SOURCE
#include <dirent.h>
或通过命令行作为编译器选项
cc -std=c11 -D_DEFAULT_SOURCE -Wall -Werror -pedantic