title: Typedef in header file not visible to another file that includes it
body: <p>I am encountering the following problem in C:
  I declare a typedef for a struct in a headerfile ("mep.h")</p>
  
  <pre><code>#ifndef MEP_H
  #define MEP_H
  
  typedef struct Mep_tag Mep;
  &lt;other stuff declared here&gt;
  
  #endif
  </code></pre>
  
  <p>I use another headerfile ("mep_types.h") that includes "mep.h", defines the struct "Mep_tag" and uses the "Mep" type name:</p>
  
  <pre><code>#ifndef MEP_TYPES_H
  #define MEP_TYPES_H
  
  #include "mep.h"
  #include "file1.h"
  
  struct Mep_MsgElement_tag
  {
      const Mep * MsgCh;                   
  };
  
  struct Mep_tag
  {
      &lt;stuff in here&gt;
  };
  
  #endif
  </code></pre>
  
  <p>For some reason when this compiles, I get the following error:
  "mep_types.h: error: unknown type name "'Mep'".</p>
  
  <p>However, if in the "mep.h" I place the typedef outside the ifndef guard like this... </p>
  
  <pre><code>typedef struct Mep_tag Mep;
  
  #ifndef MEP_H
  #define MEP_H
  
  &lt;other stuff declared here&gt;
  
  #endif
  </code></pre>
  
  <p>... the "Mep" type name is visible in "mem_types.h".</p>
  
  <p>Might someone know how this could happen?</p>