title: typedef vs. no typedef with structs and enums in C
body: <p>In C, is there any effective difference between declaring a struct as</p>
  
  <pre><code>typedef struct {...} Foo;
  </code></pre>
  
  <p>and</p>
  
  <pre><code>struct Foo {...};
  </code></pre>
  
  <p>I know the second requires you to prefix uses with <code>struct</code>, but what are the differences between these two definitions that I'll notice when writing or executing the program? What about with <code>enum</code>s?</p>