Структура из одного заголовочного файла в другом заголовочном файле - PullRequest
0 голосов
/ 26 января 2012

Я иду довольно долго и до сих пор не понимаю, где может быть проблема.

Давайте иметь заголовочный файл 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_ */

1 Ответ

0 голосов
/ 26 января 2012

Попробуйте определить их, не используя typedef.

...