我正在使用GBDK C为原来的游戏男孩创建一个游戏,我遇到了一个小问题。我游戏中的每个房间都需要有不同的portals,但是每个portal都需要引用一个房间。下面是代码的缩减版本:
typedef struct {
Portal portals[10];
} Room;
typedef struct {
Room *destinationRoom;
} Portal;对于如何做到这一点,有什么建议吗?我尝试将struct Portal;的前向声明添加到文件的顶部,但没有帮助。
使用以下代码:
typedef struct Room Room;
typedef struct Portal Portal;
struct Room {
Portal portals[10];
};
struct Portal {
Room *destinationRoom;
};给我这个错误:
parse error: token -> 'Room' ; column 11
*** Error in `/opt/gbdk/bin/sdcc': munmap_chunk(): invalid pointer: 0xbfe3b651 ***发布于 2015-10-10 23:04:58
重新排序定义并为Room和Portal类型编写一个前向声明:
typedef struct Room Room;
typedef struct Portal Portal;
struct Portal {
Room *destinationRoom;
};
struct Room {
Portal portals[10];
};注意,为了一致性,我将typedef Portal从实际的struct Portal定义中分离出来,尽管它不是严格必要的。
还请注意,这种样式与C++兼容,在这种情况下类型胡枝子f是隐式的,但可以以这种方式显式地写入,或者使用简单的前向声明(如struct Room; )。
如果由于某种原因不能对struct标记和typedef使用相同的标识符,则应该以如下方式声明结构:
typedef struct Room_s Room;
typedef struct Portal_s Portal;
struct Portal_s {
Room *destinationRoom;
};
struct Room_s {
Portal portals[10];
};https://stackoverflow.com/questions/33059819
复制相似问题