header1.h
-----------------
struct A{
int a;
B *b;
};
header2.h
-------------------
#include"header1.h"
typedef struct b{
int aa;
char bb;
int cc;
}B;
main.c
--------------------
#include<header2.h>
main(){
struct A *ace;
ace = malloc(sizeof(struct A));
ace->b = malloc(sizeof(B));
}
問題: 基本的に、header1.h は header2.h で定義された構造体を使用する必要があります。
ジレンマ: header2.h には header1.h が含まれているため、header1.h に header2.h を含めると、循環依存関係が発生します。
いくつかの解決策: 問題を解決する 1 つの方法は、void ポインターを使用することですが、他の方法はありますか? 前方宣言を試みたのですが、「typedef を再定義しています」と表示されます。