title: What's the difference between int and extern int in C?
body: <pre><code>int i;        // A.
  extern int i; // B.
  </code></pre>
  
  <p>I know A is a variable's definition. Namely, the compiler creates an object and assigns a block of memory to the variable <code>i</code>. But what is B? What's the difference between the definition and the declaration?</p>