title: What does "internal linkage" mean?
body: <p>In the standard it says that:</p>
  
  <blockquote>
    <p>When a name has internal linkage , the entity it denotes can be
    referred to by names from other scopes in the same translation unit.</p>
  </blockquote>
  
  <p>and:</p>
  
  <blockquote>
    <p>A name having namespace scope (3.3.6) has internal linkage if it is
    the name of — a variable, function or function template that is
    explicitly declared static;</p>
  </blockquote>
  
  <p>So consider the following code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  namespace A
  {
          /* a with internal linkage now.
             Entity denoted by a will be referenced from another scope.
             This will be main() function scope in my case
          */
      static int a=5;
  }
  
  int main()
  {
          int a; //declaring a for unqualified name lookup rules
      printf("%d\n",a);//-1216872448
  }
  </code></pre>
  
  <p>I really don't understand the definitions in the standard. What does it mean that:</p>
  
  <blockquote>
    <p>the entity it denotes can be referred to by names from other scopes in
    the same translation unit.</p>
  </blockquote>