gpt4 book ai didi

c - 不同头文件中的两个结构,都使用另一个

转载 作者:太空狗 更新时间:2023-10-29 17:00:59 24 4
gpt4 key购买 nike

我已经浏览了一堆关于 hear 的话题以及我在 Google 上找到的一堆其他话题。我似乎仍然无法正确理解这一点。

//Room.h
#ifndef ROOM_H
#define ROOM_H

#include "Door.h"

typedef struct {
Door* doors[3];

} Room;

#endif

//Door.h
#ifndef DOOR_H
#define DOOR_H

#include "Room.h"

typedef struct {
Room* room1;
Room* room2;
} Door;

//main.c
#include <stdio.h>
#include "Room.h"
int main() { ... }

我已经尝试将它添加到 Door.h 的顶部

typedef struct Room room1;
//typedef struct Room* room1;
//typedef stuct Room;
//typedef struct Room*;

都给我这个错误:

“未知类型名称‘房间’”

我想将这些结构保留在单独的头文件中。

最佳答案

像这样尝试:

typedef struct Room Room;
typedef struct Door Door;

struct Room{
Door* doors[3];
};

struct Door{
Room* room1;
Room* room2;
};

前两行是允许它们相互引用的类型声明。

只要前两行排在前面,在头文件中如何分隔它们并不重要。


在您的情况下,它们可以按如下方式拆分:

room.h

typedef struct Door Door;

struct Room{
Door* doors[3];
};

门.h

typedef struct Room Room;

struct Door{
Room* room1;
Room* room2;
};

关于c - 不同头文件中的两个结构,都使用另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463639/

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