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

标签 c struct header-files

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

相关文章:

c++ - 指针指向 0x1 - 检查 null 是否有效?

计算C行中的字符数

c++ - 编译时检查以确保结构中的任何地方都没有填充

c - 函数执行后结构保持不变

c++ - C++ 中的类和头文件

c - 字符串格式化技巧/文档

c++ - Visual Studio 2013 中可能存在的 C/C++ 编译器错误

c - 初始化基本 trie 节点时不兼容的指针类型

c++ - 试图从头文件中的类调用函数,但调试无法识别类或函数

c++ - 当我将代码分离到头文件时出现问题