我有這兩種結構的...爲了兩個結構
typedef struct{
MY_SECOND_STRUCT s1;
}MY_FIRST_STRUCT;
typedef struct{
int s1;
}MY_SECOND_STRUCT;
我喜歡這個順序,我不希望他們進行切換。 但是編譯器不知道此刻MY_SECOND_STRUCT,我得到錯誤
error: expected specifier-qualifier-list before 'MY_SECOND_STRUCT'
從來就試圖定義添加聲明頂端
struct MY_SECOND_STRUCT;
也改爲
typedef struct{
struct MY_SECOND_STRUCT s1;
}MY_FIRST_STRUCT;
但它沒有幫幫我。
這裏的其他答案很好。您可能想知道爲什麼您可以轉發聲明結構,然後聲明一個指針 - 編譯器知道指針的大小,因此它可以確定包含它的結構的大小,但它不知道大小第二個結構,所以它不能定義一個包含它的結構。 –