title: How to correctly use the extern keyword in C
body: <p>My question is about when a function should be referenced with the <code>extern</code> keyword in C.</p>
  <p>I am failing to see when this should be used in practice.  As I am writing a program all of the functions that I use are made available through the header files I have included.  So why would it be useful to <code>extern</code> to get access to something that was not exposed in the header file?</p>
  <p>I could be thinking about how <code>extern</code> works incorrectly, and if so please correct me.</p>
  <p>Also.. Should you <code>extern</code> something when it is the default declaration without the keyword in a header file?</p>