title: Redefinition Issue using Makefile
body: <p><strong>main.c:</strong></p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include "proto.h"
  
  int main(void)
  {
  
      return(0);
  } // end main
  </code></pre>
  
  <p><strong>support.c:</strong></p>
  
  <pre><code>#include "proto.h"
  
  \\ only function defintions
  </code></pre>
  
  <p><strong>proto.h:</strong></p>
  
  <pre><code>#ifndef proto
  #define proto
  double PI = 3.14159;
  int LOOP_LIMIT = 90;
  
  #endif
  </code></pre>
  
  <p><strong>makefile:</strong></p>
  
  <pre><code>main: main.o  support.o 
      gcc -lm -o main main.o support.o
  main.o: main.c proto.h
      gcc -c main.c
  support.o: support.c proto.h
      gcc -c support.c
  </code></pre>
  
  <p>Whenever I run the makefile with the files defined as above, I always get a multiple definition error, despite having a conditional compilation.</p>
  
  <p>I am not sure what is happening here and how to resolve the issue.</p>
  
  <p>Error message is: </p>
  
  <pre><code>multiple definition of `PI'
  multiple definition of `LOOP_LIMIT'
  </code></pre>