对于一个类似冒险的游戏,我为每个区域都有一个结构,每个区域都需要有一个相关区域的列表,部队可以从母区域进入。
从理论上讲

typedef struct {
    char* name;
    region_t* connections;
} region_t;

然而,这当然是不可能的,因为在分析器到达类型区域T**之前,区域不存在。因此,我选择使用void*代替region_t*。
typedef struct {
    char* name;
    void* connections;
} region_t;

MiddleEast.connections = malloc(6 * sizeof(void*));
MiddleEast.connections = &SouthernEurope;
MiddleEast.(connections + 1) = &Egypt;

使用region_tsMiddleEastSouthernEuropeEgypt,我可以成功地将第一个连接设置为Southern Europe,但是当我试图将.(connections + 1)设置为&Egypt时,会出现编译器错误。
error: expected identifier before ‘(’ token
如何正确访问下一个内存地址?

最佳答案

解决方案不是void *,而是正确使用结构。
具有名称的结构可以在其内部引用。类型不存在,但命名结构是这样的,因此您可以编写:

typedef struct region{
    char* name;
    struct region* connections;
} region_t;

10-08 02:09