Объявления должны быть перед тем местом, где они используются, поэтому эти два объявления должны поменяться местами. Чтобы выделить player1
и player2
, компилятору потребуется полное объявление struct player
.
Затем вы должны сообщить компилятору, что struct game
будет объявлено позже. Информации достаточно, чтобы создать «указатель на что-то».
#ifndef SERVER_STRUCTURES_H
#define SERVER_STRUCTURES_H
struct game;
typedef struct player {
int id;
int score;
struct player *player1;
struct game *g ;
} player_t;
typedef struct game {
int id;
struct player player1;
struct player player2;
struct game *next;
} game_t;
#endif