title: What does #include actually do?
body: <p>In C (or a language based on C), one can happily use this statement:</p>
  
  <pre><code>#include "hello.h";
  </code></pre>
  
  <p>And voila, every function and variable in <code>hello.h</code> is automagically usable.</p>
  
  <p>But what does it actually do? I looked through compiler docs and tutorials and spent some time searching online, but the only impression I could form about the magical <code>#include</code> command is that it "copy pastes" the contents of <code>hello.h</code> instead of that line. There's gotta be more than that.</p>