Coo*_*Joe 8 c struct header-files
我已经听过一堆关于听到的帖子以及我在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() { ... }
Run Code Online (Sandbox Code Playgroud)
我已经尝试将其添加到Door.h的顶部
typedef struct Room room1;
//typedef struct Room* room1;
//typedef stuct Room;
//typedef struct Room*;
Run Code Online (Sandbox Code Playgroud)
所有人都给了我这个错误:
"未知类型名称'房间'"
我想保持这些结构单独的头文件.
试试这样:
typedef struct Room Room;
typedef struct Door Door;
struct Room{
Door* doors[3];
};
struct Door{
Room* room1;
Room* room2;
};
Run Code Online (Sandbox Code Playgroud)
前两行是允许它们相互引用的类型声明.
只要前两行出现在头文件中,如何将它们分开并不重要.
在您的情况下,它们可以拆分如下:
room.h
typedef struct Door Door;
struct Room{
Door* doors[3];
};
Run Code Online (Sandbox Code Playgroud)
door.h
typedef struct Room Room;
struct Door{
Room* room1;
Room* room2;
};
Run Code Online (Sandbox Code Playgroud)
C 结构体引用方式:
房间.h
typedef struct Room_s {
struct Door_s * doors[3];
} Room_t;
Run Code Online (Sandbox Code Playgroud)
门.h
typedef struct Door_s {
struct Room_s *room1;
struct Room_s *room2;
} Door_t;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5213 次 |
| 最近记录: |