I'm using GBDK C to create a Game for the original Game Boy, and I have run in to a little problem. Each room in my game needs to have different portals
, but each portal
needs to reference a room. Here is a cut-back version of the code:
typedef struct {
Portal portals[10];
} Room;
typedef struct {
Room *destinationRoom;
} Portal;
Any suggestions on how to achieve this? I tried adding a forward declaration of struct Portal;
to the top of the file but it didn't help.
Using the following code:
typedef struct Room Room;
typedef struct Portal Portal;
struct Room {
Portal portals[10];
};
struct Portal {
Room *destinationRoom;
};
Gives me this error:
parse error: token -> 'Room' ; column 11
*** Error in `/opt/gbdk/bin/sdcc': munmap_chunk(): invalid pointer: 0xbfe3b651 ***
Reorder the definitions and write a forward declaration for the
Room
andPortal
types:Note that I separated the
typedef Portal
from the actualstruct Portal
definition for consistency, even though it is not strictly necessary.Also note that this style is compatible with C++, where the typedef is implicit but can be written explicitly this way, or with a simple forward declaration like
struct Room;
If for some reason you cannot use the same identifier for the
struct
tag and thetypedef
, you should declare the structures this way: