title: typedef a function pointer type
body: <p>I want to declare a pointer type which point to a function, so I try:</p>
  
  <p><code>typedef void (*print)(void);</code>  works perfect</p>
  
  <p><code>void (*print)(void);</code>   p is a ponter variable , not a type.                                                                                                                                                                       </p>
  
  <p><code>typedef (void) (*print)(void);</code> error expected identifier or ‘(’ before ‘void’ </p>
  
  <p><code>typedef void (*)(void) Print;</code> </p>
  
  <p>error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘_ <em>attribute</em> _’ before ‘Print’ .</p>
  
  <p>My question is:</p>
  
  <ol>
  <li><p>Do I have to use <code>typedef</code> to declare a function pointer type ?</p></li>
  <li><p>Why <code>typedef (void) (*print)(void);</code> is wrong ? what <code>()</code> means here?</p></li>
  <li><p>Why I can't write in this way:<code>typedef void (*)(void) Print</code> ?</p></li>
  </ol>