我已经浏览了一堆关于 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/