Я иду довольно долго и до сих пор не понимаю, где может быть проблема.
Давайте иметь заголовочный файл Player.h
#ifndef PLAYER_H_
#define PLAYER_H_
typedef struct player
{
char *name;
int gameId;
int socketfd;
int points;
int state;
}player_struct;
#endif /* PLAYER_H_ */
И давайте получим второй заголовочный файл Game.h
#ifndef GAME_H_
#define GAME_H_
#include "Player.h"
#define NUMBEROFPLAYERS 2
typedef struct game
{
//Here
}game_struct;
#endif /* GAME_H_ */
Цель моей typedef - создать тип player_struct, используя что-то вроде этого:
Это исходный файл Player.c - это работает.
#include "Player.h"
player_struct *create_player
{
player_struct *player;
//body malloc ....
return player;
}
Я использую редактор Eclipse для C и C ++, у меня есть проект C, скомпилированный с Linux GCC.
Почему я не могу использовать тип player_struct в заголовочном файле game.h так же, как в Player.C, даже если я включил заголовочный файл Player.h?
на месте в заголовочном файле game.h.
player_struct *players[NUMBEROFPLAYERS];
но пишет, что тип дамбы не может быть разрешен ..
Тип player_struct не может быть разрешен
Я пробовал много способов написать struct и typedef, но ничего не помогло.
Я действительно не понимаю, какие-либо идеи?
Спасибо.
Редакция:
Меня попросили поместить туда весь мой код так:
Проблема в заголовке Game.h, когда я использую тип player_struct (это первый ряд).
первый
/* Player.h */
#ifndef PLAYER_H_
#define PLAYER_H_
typedef struct player{
char *name; // player name
int gameId; // what game
int points; //how money points
int socketfd; //socket descriptor of player
int state;
} player_struct;
//create player
player_struct *create_player();
//delete player
void delete_player(player_struct *player);
#endif /* PLAYER_H_ */
второй
/* Game.h */
#ifndef GAME_H_
#define GAME_H_
#include "Player.h"
//#include "Card.h"
#define PLAYERSLEN 2 // number of players
#define GAMESLEN 10 //number of games
#define CARDSLEN 64 //cards in one game
typedef struct game{
player_struct *players[PLAYERSLEN];//here is the problem
//card_struct *cards[CARDSLEN]; //her will be same problem
int active;
int playerOnTurn;
char *gameName;
int gameId;
}games_struct;
//typedef struct game game_struct;
//extern games_struct *games_array[GAMESLEN];
void init_game(games_struct *game);
void run_game(games_struct *game);
void *end_game(games_struct *game);
#endif /* GAME_H_ */