typedefの巡回参照問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みどり

typedefの巡回参照問題

#1

投稿記事 by みどり » 6年前

例えば
typedef struct {
C c;
....;
} A;


typedef struct {
A a;
....;
} B;

typedef struct {
B b;
....;
} C;

どんな順番でならんでも、必ずあるtypedefの中に未定義のメンバーが存在し、コンパイルエラーが出されます。

どう対処すれば宜しいでしょうか。

アバター
へろりくしょん
記事: 92
登録日時: 9年前
住所: 福岡

Re: typedefの巡回参照問題

#2

投稿記事 by へろりくしょん » 6年前

本当にそのような構造体が必要なのか根本的なところから見直します。

仮に、A hoge; と宣言した場合、
hoge.c.b.a.c.b.a.c.b.a.c.b.a..... と延々にメンバ変数を参照できてしまいますが、
この構造体がどのようにメモリに配置されるか想像できますか。

論理的に不可能であることが分かると思います。


どうしても件のよう入れ子にしたい場合は、不完全型として宣言することは出来ますが、
不完全型のインスタンスは作れませんので、メンバ変数はポインタで宣言するしかありません。

閉鎖

“C言語何でも質問掲示板” へ戻る