title: C++ #include semantics
body: <p>This is a multiple question for the same pre-processing instruction.</p>
  <h2>1 - &lt;&gt; or &quot;&quot; ?</h2>
  <p>Apart from the info found in the MSDN:</p>
  <p><a href="https://msdn.microsoft.com/en-us/library/36k2cdd4.aspx" rel="noreferrer" title="#include Directive (C-C++)">#include Directive (C-C++)</a></p>
  <p>1.a: What are the differences between the two notations?<br>
  1.b: Do all compilers implement them the same way?<br>
  1.c: When would you use the &lt;&gt;, and when would you use the &quot;&quot; (i.e. what are the criteria you would use to use one or the other for a header include)?<br></p>
  <h2>2 - #include {TheProject/TheHeader.hpp} or {TheHeader.hpp} ?</h2>
  <p>I've seen at least two ways of writing includes of one's project headers.
  Considering that you have at least 4 types of headers, that is:</p>
  <ul>
  <li>private headers of your project?</li>
  <li>headers of your project, but which are exporting symbols (and thus, &quot;public&quot;)</li>
  <li>headers of another project your module links with</li>
  <li>headers of a compiler or standard library</li>
  </ul>
  <p>For each kind of headers:</p>
  <p>2.a: Would you use &lt;&gt; or &quot;&quot; ?<br>
  2.b: Would you include with {TheProject/TheHeader.hpp}, or with {TheHeader.hpp} only?<br></p>
  <h2>3 - Bonus</h2>
  <p>3.a: Do you work on project with sources and/or headers within a tree-like organisation (i.e., directories inside directories, as opposed to &quot;every file in one directory&quot;) and what are the pros/cons?</p>