2011-02-25 85 views
3

我正在使用Eclipse CDT編寫C程序。我想要啓動我的for循環像這樣...DT_REG未聲明(首次在此函數中使用)和-std = c99

for(int i = 0; i < 5; i++) 

所以我添加了-std = c99到gcc命令行。這具有引發錯誤的副作用:「DT_REG」未申報爲線(第一在這個函數使用):

if(dir_ent->d_type != DT_REG) 

DT_REG在dirent.h定義(其被包括在內)。代碼在gcc命令行上沒有-std = c99的情況下編譯正常。我錯過了什麼?

回答

3

-std=gnu99會發生什麼?它看起來像d_type字段是非標準的(請參閱the GNU libc manual page "Directory Entries"),因此代表目錄條目類型的枚舉在嚴格兼容模式下被禁用。看起來您需要定義_BSD_SOURCE(或_GNU_SOURCE)以獲取類型值。

+0

gnu99做的伎倆。感謝您的鏈接,它有助於澄清事情。 –

相關問題