2010-10-04 79 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

相关问题