我在两个不同的头文件中有两个结构,让我们说:
header1.h:
#ifndef HEADER1_H
#define HEADER1_H
#include "header2.h"
typedef struct
{
Struct2 s;
} Struct1;
#endif
header2.h:
#ifndef HEADER2_H
#define HEADER2_H
#include "header1.h"
typedef struct
{
Struct1* s;
} Struct2;
#endif
如您所见,我在Struct1中声明了Struct2,并在Struct2中声明了指向Struct1的指针。显然,当我尝试编译它时,出现一个错误:未知类型名称“ Struct1”或“ Struct2”。有没有办法做到这一点,或者我必须改变观念?
最佳答案
如果您确实想这样做,则只需在真正声明每个结构之前使用部分声明即可:
头文件1.h
#ifndef _HEADER1_H
#define _HEADER1_H
#include "header2.h"
struct struct1
{
struct struct2 s2;
};
#endif
标头2.h
#ifndef _HEADER2_H
#define _HEADER2_H
struct struct1;
struct struct2
{
struct struct1 *s1;
};
#endif