不能使用結構類型t_room
,因爲它沒有定義來定義類型t_room
本身。因此,你應該和實際定義struct s_room
之前
struct s_room *connect;
或者你可以typedef
struct s_room
型替換此
t_room *connect;
。然後你可以在定義中使用類型別名。
// struct s_room type is not defined yet.
// create an alias s_room_t for the type.
typedef struct s_room s_room_t;
// define the struct s_room type and
// create yet another alias t_room for it.
typedef struct s_room {
// other data members
s_room_t *connect;
// note that type of connect is not yet defined
// because struct s_room of which s_room_t is an alias
// is not yet fully defined.
} t_room;
// s_room_t and t_room are both aliases for the type struct s_room
就個人而言,我更喜歡前者,因爲做的是後者,你必須引入一個額外的typedef
只是定義其他typedef
!這看起來像名稱空間混亂,沒有任何實際的好處。
好吧,如果它不編譯,它也顯示錯誤。你也可以在你的問題中粘貼錯誤 –
@unwind它是相似的,但不完全相同 - 這裏只有1個結構。 – Dukeling