title: C circular dependency
body: <p>I have this problem with circular dependency in <strong>C</strong>, I looked around the other questions about this topic but really couldn't find the answer. </p>
  
  <p>I have this first struct named vertex: </p>
  
  <pre><code>#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
  </code></pre>
  
  <p>The second struct is the edgelist which is included by the vertex.</p>
  
  <pre><code>#ifndef edgelist_h
  #define edgelist_h
  
  #include "edge.h" //include edge, because its needed
  
  typedef struct _edgelist
  {
      edge** edges; 
      int capacity, size;
  } edgelist;
  
  //...
  
  #endif
  </code></pre>
  
  <p>And then the last struct, the one where the problem raises, the edge struct gets included by the edgelist above.</p>
  
  <pre><code>#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
  </code></pre>
  
  <p>I tried everything I could, forward declaring, using <code>#ifndef</code>, <code>#define</code> etc. but couldn't find the answer. </p>
  
  <p>How can I resolve this circular dependency problem?</p>