2011-02-25 9 views
3

Eclipse CDTを使用してCプログラムを作成しています。このような私のforループを初期化したいと思います...DT_REGは宣言されておらず(この関数では最初に使用されます)、-std = c99

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

だから、gccのコマンドラインに-std = c99を追加しました。これは、エラーをスローの副作用を有する:ラインの「DT_REG」宣言されていない(この関数の最初の使用):DT_REGはdirent.hで定義され

if(dir_ent->d_type != DT_REG) 

(含まれます)。このコードは、gccコマンドラインで-std = c99を指定しないと正常にコンパイルされます。私は何が欠けていますか?

答えて

3

-std=gnu99はどうなりますか? d_typeフィールドが非標準(the GNU libc manual page "Directory Entries"を参照)であるように見えるので、ディレクトリエントリタイプを表すenumは厳密に準拠したモードでは無効になります。型の値を取得するには、_BSD_SOURCE(または_GNU_SOURCE)を定義する必要があるようです。

+0

gnu99でした。リンクありがとう、それは物事を明確にするのに役立ちました。 –