title: Please explain syntax rules and scope for "typedef"
body: <p>What are the rules? OTOH the simple case seems to imply the new type is the last thing on a line.  Like here <code>Uchar</code> is the new type:</p>
  
  <pre><code>typedef unsigned char Uchar;
  </code></pre>
  
  <p>But a function pointer is completely different.  Here the new type is <code>pFunc</code>:</p>
  
  <pre><code>typedef int (*pFunc)(int);
  </code></pre>
  
  <p>I can't think of any other examples offhand but I have come across some very confusing usages.</p>
  
  <p>So are there rules or are people just supposed to know from experience that this is how it is done because they have seen it done this way before?</p>
  
  <p>ALSO: What is the scope of a <code>typedef</code>?</p>