CL /Fx


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


This option has no syntactic relations with other options. It passes unchanged to the front-end C++ compiler (C1XX).


The /Fx option directs that for each source file whose use of attributes produces injected text, the compiler is to produce a corresponding output file that shows the injected code merged with the original source code. The output file, hereafter referred to as the merge file, is named by inserting “.mrg” between the source file’s name and extension, or by appending “.mrg” if the source file has no extension (subject to a problem described in the notes on warning C4542).

Each merge file begins with explanatory comments

// Created by compiler
// filename
// compiler-generated file created date at time
// This C++ source file is intended to be a representation of the
// source code injected by the compiler.  It may not compile or
// run exactly as the original source file.

After reproducing from the source file any initial lines that have been “skipped” by using a precompiled header, there is also always

//+++ Start Injected Code
[no_injected_text(true)];      // Suppress injected text, it has already been injected
#pragma warning(disable: 4543) // Suppress warnings about skipping injected text
#pragma warning(disable: 4199) // Suppress warnings from attribute providers

#pragma message("\n\nNOTE: This merged source file should be visually inspected for correctness.\n\n")
//--- End Injected Code

Though this block is shown as injected code, it was not injected when compiling the original source file but is instead placed in the merge file as an aid to compiling the merge file.