gpt4 book ai didi

c - 'rooms' 之前的预期说明符限定符列表

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:02 25 4
gpt4 key购买 nike

我正在开发 DnD-Text-Based-Style C 游戏,但在编译我的结构时遇到问题。到目前为止,这是我的结构:

typedef struct stats {                  //
int strength; //
int wisdom; //
int agility; //
} stats;

typedef struct rooms {
int n_monsters;
int visited;
rooms nentry;
rooms sentry;
rooms wentry;
rooms eentry;
monster *monsters;
} rooms;

typedef struct monster {
int difficulty;
char *name;
char *type;
int hp;
} monster;

typedef struct dungeon {
char *name;
int n_rooms;
rooms *rooms;
} dungeon;

typedef struct player {
int maxhealth;
int curhealth;
int mana;
char *class;
char *condition;
stats stats;
rooms c_room;
} player;

typedef struct game_structure {
player p1;
dungeon d;
} game_structure;

编译时出现错误:structure.h:21: 错误:“房间”之前的说明符限定符列表

你能帮我弄清楚这是为什么吗?是因为我从包含房间的结构中调用房间吗?请帮忙。

最佳答案

这段代码有很多问题。第一个是结构定义必须知道要分配多少内存,当它包含一个尚未完全定义的类型时它不能这样做(这就是为什么人们建议你使用指针,因为指针的大小是在编译时已知)。

然而,这一点很重要,简单地更改为指针并不能解决问题,因为在适当的 typedef 完成之前遇到第一个房间*。你需要这样写:

struct rooms {
int n_monsters;
int visited;
struct rooms *nentry;
struct rooms *sentry;
struct rooms *wentry;
struct rooms *eentry;
monster *monsters;
} rooms;

或执行前向声明(typedef struct rooms rooms;)。您还需要确保怪物类型已定义或至少有前向声明。

关于c - 'rooms' 之前的预期说明符限定符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com