Как я могу отправить указатель из другого модуля на новый модуль?
Здравствуйте, я только начинаю проект по программированию в c для игры для класса.Эта игра содержит структуру, называемую game, которая также содержит данные различных типов, такие как Players ir Objects.Эти структуры идентифицируются по длинному Id, классифицированному таким образом, что, например, объекты имеют Id между # 0 и # 100.
Чтобы упростить процесс, я создал функцию "what_id", которая, перебирая только Id, возвращает указатель на соответствующую ему структуру.Я знаю, как, отправляя структуру 'game', где содержатся все идентификаторы и Id, возвращают переменную, но есть модули, которые ни в коем случае не используют эту большую переменную 'game', например player.c.
Как я могу отправить «игру» этой функции, не имея ее?
typedef struct _Game{
Player* player[MAX_PLAYERS + 1];
Object* object[MAX_OBJECTS + 1];
Space* spaces[MAX_SPACES + 1];
T_Command last_cmd;
} Game;
typedef struct _Object{
Id id;
char name[MAX_SPACES];
}
void* what_id(Game* game, Id id){
if(id == NO_ID) return ERROR;
if(0 <id<=MAX_SPACES){
return what_space(game->space, id);
}else if(MAX_SPACES<id<=(MAX_OBJECTS+MAX_SPACES)){
return what_object(game->object, id);
}else if((MAX_OBJECTS+MAX_SPACES<id<(MAX_PLAYERS+MAX_OBJECTS+MAX_SPACES)){
return what_player(game->player, id);
}else {
fprinf(stderr,"Id asigment max stacked.";
return ERROR;
}
}
Space* what_space(const Space* space, Id id){
int i;
for(i=0;i<MAX_SPACES;i++){
if(space[i]->id == id)return space[i];
}
fprintf(stderr, "Error no space_id %d founded", id);
return ERROR;
}