title: extern function prototype and static definition
body: <p>I am working on getting FreeGLUT to build on OSX and am running into many instances of the same problem. Many of the functions exist only in the .c files.</p>
  
  <p>Here's an example</p>
  
  <pre><code>extern void fghRestoreState( void );
  
  static void fghRestoreState( void ){...}
  </code></pre>
  
  <p>I have a limited understanding of C, but the compiler errors seem to make sense:</p>
  
  <pre><code>src/Common/freeglut_gamemode.c:252: error: static declaration of ‘fghRestoreState’ follows non-static declaration
  src/Common/freeglut_gamemode.c:43: error: previous declaration of ‘fghRestoreState’ was here
  </code></pre>
  
  <p>My question is, is there any reason they set it up this way? Would it compile on other platforms correctly?</p>