- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 GBDK C 为原版 Game Boy 创建游戏,但遇到了一个小问题。我游戏中的每个房间都需要有不同的 portal
,但每个 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 ***
最佳答案
重新排序定义并为 Room
和 Portal
类型编写前向声明:
typedef struct Room Room;
typedef struct Portal Portal;
struct Portal {
Room *destinationRoom;
};
struct Room {
Portal portals[10];
};
请注意,为了保持一致性,我将 typedef Portal
与实际的 struct Portal
定义分开,尽管这并不是绝对必要的。
另请注意,此样式与 C++ 兼容,其中 typedef 是隐式的,但可以以这种方式显式编写,或使用简单的前向声明,如 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];
};
关于c - GBDK C 中 typedef 结构的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059819/
我目前正在开发一个 gameboy 模拟器,为了测试我的模拟器的正确性,我正在使用 GBDK 为我的模拟器编译 c 程序。 我注意到编译器(正如预期的那样)通过旋转优化了与 2 的幂的常量的乘法。然而
我正在尝试将一对结构数组传递给 C 中的函数。 我必须使用 SDCC 编译器,因为我正在使用 GBDK 为 Gameboy 进行编译。 当我传递结构数组时,出现如下所示的错误,但是,如果我完全取出函数
我正在为 GBDK 中的 GameBoy 制作游戏,我正在尝试为游戏添加声音。 GBDK 有一个函数可以播放一组值的声音,唯一的问题是当它播放声音时脚本的其余部分会卡住。有没有办法让它们同时运行? 最
我想使用 GBExtended library在我的游戏中,但我很难理解如何包含该库。 我可以看到 GBExtended 库(至少从 loderrunner 示例源代码)包含目录 includes/、
我正在使用 GBDK C 为原版 Game Boy 创建游戏,但遇到了一个小问题。我游戏中的每个房间都需要有不同的 portal,但每个 portal 都需要引用一个房间。这是代码的缩减版本: typ
#include #include #include "racecars.h" /* RACECARS.C Tile Source File. Info: Form
我是一名优秀的程序员,十分优秀!