title: Include Guard still inserting Global Variables
body: <p>I have 3 <code>*.c</code> files (<code>file1.c</code>, <code>file2.c</code> and <code>file3.c</code>) and 1 <code>*.h</code> file (<code>file3.h</code>) in a project (Visual Studio).</p>
  
  <pre><code>/*******************************
  file3.h
  ********************************/
  #ifndef FILE3_H
  #define FILE3_H
  int gintVariable = 400;
  #endif
  </code></pre>
  
  <p><br/></p>
  
  <pre><code>/*******************************
  file1.c
  ********************************/
  #include "file3.h"
  #include &lt;stdio.h&gt;
  #include &lt;conio.h&gt;
  
  int modifyGlobalVariable(void);
  void printGlobalVariable(void);
  
  int main(void)
  {
      modifyGlobalVariable();
      printGlobalVariable();
      printf("Global variable: %d\n", gintVariable++);
      getch();
      return 0;
  }
  </code></pre>
  
  <p><br/></p>
  
  <pre><code>/*******************************
  file2.c
  ********************************/
  #include "file3.h"                      
  
  int modifyGlobalVariable(void) 
  { 
      return gintVariable++; 
  }
  </code></pre>
  
  <p><br/></p>
  
  <pre><code>/*******************************
  file3.c
  ********************************/
  #include "file3.h"
  #include &lt;stdio.h&gt;
  
  void printGlobalVariable(void)
  {
      printf("Global: %d\n", gintVariable++);
  }
  </code></pre>
  
  <p>When I build the solution in VS, it is giving error as <code>"_gintVariable already defined in file1.obj"</code>.</p>
  
  <p>I did check in the pre-processor output, the gintVariable is included in all the *.c files even though I have included include guards.</p>
  
  <p>What mistake I am doing?</p>