CL /Fc



The optional argument consists of whatever follows immediately within the same command-line token.

For the parsing:

If there are two or more compilable input files, it is an error (D2036) to provide an argument except in the syntax that ends with a backslash. Refer to the note on the error for some subtlety about what counts as a compilable input file in this context.


The /Fc option overrides /FA, /Fa, /Fl and earlier instances of itself. Only the last instance has its argument checked.

This option generates the following for the back-end C/C++ compiler (C2):

with name and ext in the /Fa option resolved from defaults if not given in the /Fc argument. The default name is that of the source file. The default ext is “cod”.


The /Fc option asks that an assembly-language listing be created for each source file, with the a, c and s styles preselected. In isolation, it is essentially a shorthand for the combination

/FAsc /Fa[[path]\][name][.[ext]]

The following table shows on the left a /Fc option in its various syntactic cases and on the right the corresponding pathname that CL generates for C2 to use for the listing file that is to be produced from compiling a source file whose file name (disregarding any file extension) is source

option as given pathname for listing file
/Fc[[path]\][name].[ext] [[path]\][name].[ext]
/Fc[[path]\]name [[path]\]name.cod
/Fc[[path]\] [[path]\]source.cod

Documentation Status

That the effects of /Fc are obtainable by composing other options is perhaps why it is not documented. Indeed, it may be that the separate and more general specification of listing styles through /FA is a relatively recent introduction, which made /Fc redundant, so that the latter is now retained only for backwards compatibility.

The /Fc option is semi-documented through its use in the default makefile supplied with the Windows DDK. (Put another way, this default makefile demonstrates the merit of retaining /Fc for backwards compatibility.)