2
うまくいけば、これは簡単な質問です...これは私のこの問題を再現するプロセスです。最初に私は私のソースファイルを作成します。Cヘッダーファイルにエラーが含まれています
その後、私は私の対応するヘッダファイルを作成bash $ cat t.c
#include "t.h"
int main()
{
ABC abc;
}
:次に
bash $ cat t.h
#ifdef _T_H
#define _T_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct abc {
int a;
} ABC;
#ifdef __cplusplus
}
#endif
#endif
を、私はそれをコンパイルしよう:
bash $ gcc -o t t.c
t.c: In function ‘main’:
t.c:5: error: ‘ABC’ undeclared (first use in this function)
t.c:5: error: (Each undeclared identifier is reported only once
t.c:5: error: for each function it appears in.)
t.c:5: error: expected ‘;’ before ‘abc’
が起こっていますか? t.cの型として 'ABC'の代わりに 'struct abc'を使用すると、コンパイルされます。なぜtypedefは機能していないのですか?
ビンゴ。うわー、ええ、それはちょっとしたことですべてがうまくいきません。うまくいけば、その問題を抱えている誰かがこのスレッドを見るでしょう:) – Scott
ところで、ヘッダーガードのために、アンダースコアで始まるもの、またはダブルアンダースコアを含むものを使用しないでください。このような名前は、標準ライブラリの実装で使用するために予約されています。ちょうど 'T_H'はそのトリックをうまくやっています。 –