У меня есть проблемы с домашней работой с C struct ... если кто-то может быть вам полезен. Потому что я этого не понимаю.Определение правильной структуры на основе существующего кода
Рабочий код содержит те биты (Это игра со змеей, которая имеет головку, содержащую направление):
game_t *game = …;
game->snake.head->direction = …;
snake_info(game->snake)
snake_destroy(&(game->snake));
Прототипы (я, видимо, не может измениться):
void snake_info(snake_t const *snake);
void snake_destroy(snake_t *snake);
И структуру, которую я пытаюсь построить.
typedef struct game {
snake_t snake; // to match call to snake_destroy and direction assignation
// or
snake_t *snake; // to match call to snake_info
} game_t;
Но я не могу заставить обоих работать одновременно.
EDIT:struct
называли snake
в то время как на самом деле это game
. Я пропустил что-то очевидное или есть проблема с этими прототипами (или вызовами)?
EDIT 2:
Компилятор ошибок с первым раствором snake_t snake
(в game
):
snake.c: In function ‘game_print’:
snake.c:244:5: erreur: incompatible type for argument 1 of ‘snake_info’
gamecore.c:20:6: note: expected ‘const struct snake_t *’ but argument is of type ‘snake_t’
Компилятор ошибок со вторым snake_t раствора * snake`:
snake.c: In function ‘game_destroy’:
snake.c:205:5: attention : passing argument 1 of ‘snake_destroy’ from incompatible pointer type
gamecore.c:54:6: note: expected ‘struct snake_t *’ but argument is of type ‘struct snake_t **’
могли бы вы предоставить (укороченный) вывод компилятора или сообщения об ошибке? И вы должны использовать вторую форму, так как вы используете 'snake.head', а не' snake-> head'. –
ошибки добавлены, спасибо за помощь. – greut