我在 C 结构方面遇到了一些家庭作业问题……如果有人能提供帮助的话。因为我不明白。
工作代码包含这些位(这是一个游戏,蛇的头部包含方向):
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;
但我不能让两者同时工作。
编辑:实际struct
调用snake
时调用了game
. 我错过了一些明显的东西还是这些原型(或调用)有问题?
编辑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 **’