title: static extern vs extern static
body: <p>Let us say I have only one file in my project called test.c; the code below does not compile if I do not define "TRUE". I just want to understand the behavior. Please throw some light on this aspect.</p>
  
  <pre><code>#ifdef TRUE
  static int a;
  extern int a;
  #else
  extern int a;
  static int a;
  #endif
  
  int main (void)
  {
    a =10;
    printf("%d", a);
    return 0;
  }
  </code></pre>