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

8
我正在使用Eclipse CDT编写C程序。我想像这样初始化我的for循环...
for( int i = 0; i < 5; i++ )

所以我在gcc命令行中添加了-std=c99。这会导致出现错误:“DT_REG”未声明(在此函数中首次使用),该错误是由以下代码行引起的:

if( dir_ent->d_type != DT_REG )

DT_REG在dirent.h中定义(该文件已被包含)。使用gcc命令行时,即使没有使用-std=c99选项,代码也可以正常编译。我错过了什么?

1个回答

10

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


gnu99解决了问题。感谢提供的链接,它帮助澄清了事情。 - J. Andrew Laughlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接