不完全な型へのポインタの逆参照 質問する

不完全な型へのポインタの逆参照 質問する

これについては多くの質問を見てきましたが、具体的なコードを使わずに別の質問をしたいと思います。簡単に型が不完全になる原因を特定したいのですが、私の場合は他の人のコードを使用しており、ヘッダーが正しくないことは完全に確信していますが、(コンピューターは人間の目よりもはるかに速く、優れた方法でこの作業を行うため)コンパイラに「ねえ、考える34行目にX型がありますが、これは実際にはない」エラー自体は割り当て時にのみ表示されるため、あまり役に立ちません。

ベストアンサー1

先日、誰かが不完全な型を誤って使用して、次のようなことを指定したという質問を見ました。

struct a {
    int q; 
}; 
struct A *x; 
x->q = 3;

コンパイラは、キーワードのおかげで、完全に未定義であるstruct Aにもかかわらず、それが構造体であることを認識しました。Astruct

これはC++で、そのような使い方はstruct一般的ではありません(そして、結局、失敗につながる可能性があります)。Cでは、

typedef struct a {
    ...
} a;

aを型名として使用し、struct後者を省略することができます。これにより、名前を誤って入力したり、ヘッダーを忘れたりした場合に、コンパイラは後で不完全な型ではなく、未定義の識別子エラーを返すようになります。

おすすめ記事