title: Header file included only once in entire program?
body: <p>I know this is a common question but I still can't fully get my head around it. </p>
  
  <p>In a <strong>C</strong> or C++ program generated from multiple different source and header files, will each header file be only included once in the entire code when the header guards are used?</p>
  
  <p>Someone told me previously that a header file (with include guards) will get included only once in one translation unit but multiple times in the entire code. Is this true?</p>
  
  <p>If it gets included only once throughout the entire code, when one file wishes to include it and the preprocessor detects that it has already been included, how does that file that wishes to use it know whereabouts in the code it was previously included ?  </p>