2010-10-04 46 views
1

之前,我正在尋找一個好辦法做這樣的事情:引用類型它被定義

typedef struct user 
{ 
    unsigned long id; 
    //userList defined below 
    userList friends; 
} 

typedef struct 
{ 
    //userList contains users 
    user * list; 
    int count; 
} userList; 

是否有合法的方式做到這一點或類似的東西?

回答

3

一個結構的定義可以通過只定義或typedef'ing的結構標籤是不完整的結構或聯合類型。這可以用來聲明指針。

但是,要聲明一個實際的對象,它不能是一個不完整的類型。

所以,爲了使您的聲明,使前向引用是指針和向後引用是對象。

3

在C語言定義之前,沒有辦法引用一個具體的(非指針)類型。你必須使用一個指針+一個類型聲明或者在它被使用之前實際定義類型。

7

不喜歡它:

typedef struct user user; 

typedef struct 
{ 
    //userList contains users 
    user * list; 
    int count; 
} userList; 

struct user 
{ 
    unsigned long id; 
    //userList defined above 
    userList friends; 
}; 
+0

bleh我太慢了 – Spudd86 2010-10-04 16:35:18

+0

不錯,但我喜歡DigitalRoss對它爲什麼起作用的解釋 – 2010-10-07 17:18:07

相關問題