title: What makes this struct incomplete?
body: <p><code>gcc</code> lovingly throws me this error:</p>
  
  <p><code>bst.c:33: error: invalid application of ‘sizeof’ to incomplete type ‘struct BSTNode’</code></p>
  
  <p>What makes BSTnode incomplete?  Below are the struct definitions relevant to BSTnode.</p>
  
  <pre><code>struct BSTnode{
  
      struct BSTnode * left;
      struct BSTnode * right;
  
      struct hash minhash;
      struct hash maxhash;
  
      struct DHTid owner;
      int misses;
  };
  </code></pre>
  
  <p>where we have:</p>
  
  <pre><code>struct hash{
      int hash;
  };
  
  struct DHTid
  {
      int islocal;
  
      unsigned long addr;
      unsigned short port;
      struct DHTnode * node;
  };
  </code></pre>
  
  <p>and currently:</p>
  
  <pre><code>struct DHTnode{
      int something;
  };
  </code></pre>
  
  <p>EDIT: My actual code has the following structure:</p>
  
  <pre><code>struct DHTnode{...};
  struct hash{...};
  struct DHTid{...}; /*changed . to ; in pseudocode*/
  struct BSTnode{...};
  </code></pre>
  
  <p>EDIT: user318466 pointed a missing semicolon, but there was still more wrong with it.</p>