title: Benefits of using extern declaration in same file as definition?
body: <p>I'm reading the source of a <strong>C</strong> project and am trying to discern why a particular use of <code>extern</code> is being used. (Note: <a href="https://stackoverflow.com/questions/26290383/when-sharing-a-const-across-files-using-extern-why-is-extern-needed-on-the-defi">This question</a> is related but for C++, not C.) Say I have four header files that each declare an <code>extern const</code> struct:</p>
  
  <pre><code>extern const struct puppy fido;
  </code></pre>
  
  <p>This struct is defined in a source file like so:</p>
  
  <pre><code>extern const struct puppy fido;
  static const struct puppy *puppies[] = { &amp;fido };
  const struct puppy fido = { "fido", 10, 10 };
  </code></pre>
  
  <p>Is there some kind of benefit to marking the variable declaration as <code>extern</code> in the source file, when those variables are defined in that very same source file? </p>