在定义结构之前引用结构中的类型

时间:2010-10-04 16:29:28

标签: c

我正在寻找一种做这样的事情的好方法:

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

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

是否有合法的方法来做到这一点或类似的东西?

3 个答案:

答案 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标记即可。这可以用来声明指针。

要声明实际对象,它不能是不完整的类型。

因此,请对您的声明进行排序,使前向引用为指针,向后引用为对象。