在下面的表示中,Ç - 字段具有不完整的類型
struct Cat{
char *name;
struct Cat mother;
struct Cat *children;
};
編譯器,給出以下的誤差爲第二場,但不是第三個字段,
error: field ‘mother’ has incomplete type
struct Cat mother;
^
如何理解這個錯誤?
在下面的表示中,Ç - 字段具有不完整的類型
struct Cat{
char *name;
struct Cat mother;
struct Cat *children;
};
編譯器,給出以下的誤差爲第二場,但不是第三個字段,
error: field ‘mother’ has incomplete type
struct Cat mother;
^
如何理解這個錯誤?
此錯誤表示您嘗試將成員添加到尚未完全定義的類型的struct
,因此編譯器無法知道其大小以確定對象佈局。
在您的特殊情況下,您嘗試讓struct Cat
將其自身的一個完整對象作爲成員(mother
字段)。類型定義中的那種無限遞歸當然是不可能的。
儘管如此,結構可以包含指向其他自身實例的指針。所以,如果你改變你的定義如下,這將是一個有效的strcut
:
struct Cat{
char *name;
struct Cat *mother;
struct Cat *children;
};
這樣就意味着'struct貓兒童[10]'也不會被允許。什麼是類型定義中的遞歸? – user1787812
@ user1787812 - 正確。但是'struct Cat * children [10]'(不是'*')是允許的。 *指針數組*完全可以。 – StoryTeller
@ user1787812 - 遞歸在包含**的類型中完全**作爲成員。 – StoryTeller
[問題定義其自身內部結構的對象(http://stackoverflow.com/questions/5329570/problem-in-定義一個結構對象本身) – BLUEPIXY
你有一個遞歸的'結構'定義。 –