DT_REG未声明(首次在此函数中使用)和-std = c99

J. *_*lin 4 c

我正在使用Eclipse CDT编写C程序.我想像这样初始化我的for循环......

for( int i = 0; i < 5; i++ )
Run Code Online (Sandbox Code Playgroud)

所以我将-std = c99添加到gcc命令行.这具有抛出错误的副作用:'DT_REG'未声明(在此函数中首次使用)为该行:

if( dir_ent->d_type != DT_REG )
Run Code Online (Sandbox Code Playgroud)

DT_REG在dirent.h中定义(包括在内).代码在gcc命令行上编译时没有-std = c99.我错过了什么?

Jer*_*ock 6

会发生什么事-std=gnu99?看起来该d_type字段是非标准的(请参阅GNU libc手册页"目录条目"),因此在严格兼容模式下禁用表示目录条目类型的枚举.看起来您需要定义_BSD_SOURCE(或_GNU_SOURCE)以获取类型值.