title: What are the stages of compilation of a C++ program?
body: <p>Are the stages of compilation of a C++ program specified by the standard?</p>
  
  <p>If so, what are they? </p>
  
  <p><strong>If not, an answer for a widely-used compiler</strong> (I'd prefer MSVS) <strong>would be great.</strong></p>
  
  <p>I'm talking about preprocessing, tokenization, parsing and such. What is the order in which they are executed and what do they do in particular?</p>
  
  <p>EDIT: I know what compilation, linking and preprocessing do, I'm mostly interested in the others and the order. Explanations for these are, of course, also welcomed since I might not be the only one interested in an answer.</p>