title: Defining a function which returns a function pointer which also returns a function pointer without typedefs
body: <p>I am trying to really understand function pointers without using <code>typedef</code> but cannot seem to get this. I do not understand what signature is needed to convey that I return a pointer to a pointer to a function.</p>
  
  <pre class="lang-c prettyprint-override"><code>#include &lt;stdio.h&gt;
  
  void odd()  { printf("odd!\n");  }
  void even() { printf("even!\n"); }
  
  void (*get_pfn(int i))()
  {
      return i % 2 == 0 ? &amp;even : &amp;odd;
  }
  
  __SIGNATURE__
  {
      return &amp;get_pfn;
  }
  
  int main()
  {
      get_pfn_pfn()(1)();
      get_pfn_pfn()(2)();
      return 0;
  }
  </code></pre>
  
  <p>To make this work, what does <code>__SIGNATURE__</code> have to be?</p>