I have this problem with circular dependency in C, I looked around the other questions about this topic but really couldn't find the answer.
I have this first struct named vertex:
#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
The second struct is the edgelist which is included by the vertex.
#ifndef edgelist_h
#define edgelist_h
#include "edge.h" //include edge, because its needed
typedef struct _edgelist
{
edge** edges;
int capacity, size;
} edgelist;
//...
#endif
And then the last struct, the one where the problem raises, the edge struct gets included by the edgelist above.
#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
I tried everything I could, forward declaring, using #ifndef
, #define
etc. but couldn't find the answer.
How can I resolve this circular dependency problem?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…