Ссылка на тип в структуре до ее определения - PullRequest
1 голос
/ 04 октября 2010

Я ищу хороший способ сделать что-то вроде этого:

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

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

Есть ли законный способ сделать это или что-то подобное?

Ответы [ 3 ]

7 голосов
/ 04 октября 2010

Сделай как:

typedef struct user user;

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

struct user
{
  unsigned long id;
  //userList defined above
  userList friends;
};
3 голосов
/ 04 октября 2010

Определение структуры может быть неполной структурой или типом объединения путем простого определения или определения типа тега struct.Это может быть использовано для объявления указателей.

Для объявления реального объекта, однако, это не может быть неполный тип.

Итак, упорядочите ваши объявления так, чтобы прямая ссылка была указателем.и обратная ссылка - это объект.

3 голосов
/ 04 октября 2010

Нет способа ссылаться на конкретный (не указатель) тип до того, как он будет определен в C. Вы должны использовать указатель + объявление типа или фактически определить тип, прежде чем он будет использован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...