The Microsoft Visual C++ Compiler

The Microsoft Visual C++ suite includes a program named CL.EXE that provides the command-line interface for a process that takes a C or C++ source file as input to produce an object file as output. This process is called compilation and although CL.EXE does not do very much of the actual work itself, it is common to call CL the compiler.

CL can also arrange what is typically the next process, in which object files are given to a linker as input to produce an executable as output. However, linking can be, and even typically is, done separately. Though these notes on the compiler do (or will) address CL’s execution of the linker, the Microsoft Visual C++ Linker is otherwise regarded as independent, with a separate set of notes.

Reference Versions

The particular Visual C++ product studied for these notes is the one in which the CL.EXE program has the version number 13.00.9466. Information about implementation details and (especially, one might hope) coding errors may be highly specific to that version. Where documentation or official literature is mentioned, the reference version is that which is supplied with the product, unless otherwise noted. No plans exist to track future versions, of either the software or the documentation. Teams of programmers at Microsoft can write this stuff much faster than I can study it—and they also have the advantage of making money from the time they put into it, not that this necessarily means they take much care to keep their documentation accurate with respect to the product.