これについては多くの質問を見てきましたが、具体的なコードを使わずに別の質問をしたいと思います。簡単に型が不完全になる原因を特定したいのですが、私の場合は他の人のコードを使用しており、ヘッダーが正しくないことは完全に確信していますが、(コンピューターは人間の目よりもはるかに速く、優れた方法でこの作業を行うため)コンパイラに「ねえ、考える34行目にX型がありますが、これは実際にはない」エラー自体は割り当て時にのみ表示されるため、あまり役に立ちません。
ベストアンサー1
先日、誰かが不完全な型を誤って使用して、次のようなことを指定したという質問を見ました。
struct a {
int q;
};
struct A *x;
x->q = 3;
コンパイラは、キーワードのおかげで、完全に未定義であるstruct A
にもかかわらず、それが構造体であることを認識しました。A
struct
これはC++で、そのような使い方はstruct
一般的ではありません(そして、結局、失敗につながる可能性があります)。Cでは、
typedef struct a {
...
} a;
a
を型名として使用し、struct
後者を省略することができます。これにより、名前を誤って入力したり、ヘッダーを忘れたりした場合に、コンパイラは後で不完全な型ではなく、未定義の識別子エラーを返すようになります。