title: Header Guards and LNK4006
body: <p>I have a character array defined in a header</p>
  
  <pre><code>//header.h
  const char* temp[] = {"JeffSter"};
  </code></pre>
  
  <p>The header if #defined guarded and has a #pragma once at the top. If this header is included in multiple places, I get an LNK4006 - char const * * temp already defined in blahblah.obj. So, I have a couple of questions about this</p>
  
  <ol>
  <li>Why does this happen if I have the guards in place? I thought that they prevented the header from being read in after the first access.</li>
  <li>Why do the numerous enums in this header not also give the LNK4006 warnings?</li>
  <li>If I add static before the signature, I don't get the warning. What are the implications of doing it this way.</li>
  <li>Is there a better way to do this that avoids the error, but lets me declare the array in the header. I would really hate to have a cpp file just for an array definition.</li>
  </ol>