1. ホーム
  2. c

[解決済み] 不完全な型へのポインタの参照解除

2022-02-06 18:54:28

質問

これに関する質問を多く見かけますが、具体的なコードを書かずに違う質問をさせていただきます。 の方法はあるのでしょうか? 簡単に は、何が原因で型が不完全なのかを判断しているのでしょうか? 私の場合、他の人のコードを使っているので、ヘッダーが正しくないと完全に確信していますが、(コンピュータは人間の目よりもずっと速く、うまくこのようなことを行うので)コンパイラに、"ちょっとあなた を考える 34行目にタイプXがありますが、これは実際には 行方不明 ." エラー自体は代入した時にしか表示されないので、あまり参考になりません。

解決方法は?

先日、以下のような指定で不完全な型をうっかり使ってしまったという質問を見かけました。

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

コンパイラは struct A は構造体であるにもかかわらず A のおかげで、まったく未定義です。 struct というキーワードがあります。

それはC++での話であり、そのような使い方は struct は非典型的です(そして、足撃ちにつながる可能性があることが判明しました)。C言語では

typedef struct a {
    ...
} a;

とすると a を型名として使用し struct を追加しました。これにより、コンパイラは、名前を間違えたりヘッダを忘れたりした場合、不完全な型ではなく、未定義の識別子のエラーを後で出すようになります。