title: Repeated typedefs - invalid in C but valid in C++?
body: <p>I would like a standard reference why the following code triggers a compliance warning in C (tested with <code>gcc -pedantic</code>; "typedef redefinition"), but is fine in C++ (<code>g++ -pedantic</code>):</p>
  
  <pre><code>typedef struct Foo Foo;
  typedef struct Foo Foo;
  
  int main() { return 0; }
  </code></pre>
  
  <p>Why can I not define a <code>typedef</code> repeatedly in C?</p>
  
  <p>(This has practical implications for the header structuring of a <a href="http://sc2.svn.sourceforge.net/viewvc/sc2/trunk/sc2/src/libs/resource/index.h?revision=3704&amp;view=markup">C project</a>.)</p>