Cの循環依存関係にこの問題があります。このトピックに関する他の質問を調べましたが、実際には答えが見つかりませんでした。
私は頂点という名前のこの最初の構造体を持っています:
#ifndef MapTest_vertex_h
#define MapTest_vertex_h
#include "edgelist.h" //includes edgelist because it's needed
typedef struct
{
char* name;
float x, y;
edgelist* edges;
} vertex;
#endif
2 番目の構造体は、頂点に含まれるエッジリストです。
#ifndef edgelist_h
#define edgelist_h
#include "edge.h" //include edge, because its needed
typedef struct _edgelist
{
edge** edges;
int capacity, size;
} edgelist;
//...
#endif
そして、問題が発生する最後の構造体であるエッジ構造体は、上記のエッジリストに含まれます。
#ifndef MapTest_edge_h
#define MapTest_edge_h
#include "vertex.h" //needs to be included because it will be unkown otherwise
typedef struct
{
float weight;
vertex* destination;
int found;
} edge;
#endif
前方宣言、使用など、できる限りのことを試みまし#ifndef
た#define
が、答えが見つかりませんでした。
この循環依存の問題を解決するにはどうすればよいですか?