CL /E

Syntax

This option has no arguments. It is /E only.

Relations

The /E option

It passes unchanged to the front-end C and C++ compilers (C1 and C1XX).

Behaviour (CL)

The /E option leaves only the front-end C and C++ compilers as active. It disables all the remaining build stages: namely, Processing, Generating Code and Linking (though Processing can later be enabled by following with /B1_5).

Standard Output

CL understands the primary outcome from the compiler modules is to write text to standard output. CL protects this outcome by disabling several mechanisms that might otherwise cause either CL itself or the compiler modules to write other text to standard output. Specifically, the /E option

Both CL (after its command-line analysis) and the compiler modules write most text, particularly error and warning messages and related notes, to standard error. By duplicating standard output as standard error before executing compiler modules, CL arranges that these messages, though still written to standard error, end up with whatever file or device CL was given as standard output. The ordinarily desirable effect is that these messages become subject to command-line redirection for easy capture to a file. Use of /E implies that this effect is not wanted. Whatever text the compiler modules are expected to produce because of /E goes to standard output (and is subject to command-line redirection), but error messages, etc, go to the file or device that was given to CL as standard error (and are not subject to command-line redirection).

That /E disables multi-processing is a natural defence since the same standard output would be given to the front-end compilers for each C or C++ source file, such that text produced as output for different source files may get intermingled. Use of /E with the usual conditions for multiprocessing (two or more input files and a /MP option whose argument is greater than 1) causes a warning (D4030).

Unrecognised Input Files

No explanation is attempted here for one more side-effect of the /E option: input files of unrecognised type become treated as C source files (instead of object files), with no warning.

Behaviour (Compiler Modules)

TO BE DONE SOMETIME