title: Does the order of #include directives and "using" statements matter at the beginning of a C++ header file?
body: <p>I am cleaning up a C++ header file and have noticed something like the following:</p>
  
  <pre><code>#if !defined(HEADER_H_)
  #define HEADER_H_
  
  #include &lt;vector&gt;
  #include &lt;string&gt;
  
  using namespace std;
  
  #include&lt;stdio.h&gt;
  
  #include "Blar/ObjA/Model.h"
  
  namespace blar{
    class Blar;
  }
  
  #include &lt;Blar/Blar.h&gt;
  #include &lt;Blar/ObjB/OtherModel.h&gt;
  
  using namespace blar;
  
  #include &lt;Utilities/OtherThing.h&gt;  
  #include &lt;qstringlist.h&gt;
  </code></pre>
  
  <p>Is this just bad practice, or do some of the ramifications of each <code>#include/using/namespace</code> related declaration actually depend on the order? Since there is no code in between, I wouldn't think so, but I'm not familiar with too many subtleties... </p>