我正在寻找一种做这样的事情的好方法:
typedef struct user
{
unsigned long id;
//userList defined below
userList friends;
}
typedef struct
{
//userList contains users
user * list;
int count;
} userList;
是否有合法的方法来做到这一点或类似的东西?
答案 0 :(得分: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;
};
答案 1 :(得分:3)
在C语言中定义之前,无法引用具体(非指针)类型。必须使用指针+类型声明,或者在使用之前实际定义类型。
答案 2 :(得分:3)
结构定义可以是不完整结构或联合类型,只需定义或键入struct标记即可。这可以用来声明指针。
要声明实际对象,它不能是不完整的类型。
因此,请对您的声明进行排序,使前向引用为指针,向后引用为对象。