# General Rules for Compiler Options

This section describes general rules for compiler options and it contains information about how we refer to compiler option names in descriptions.

## General Rules for Compiler Options

You cannot combine options with a single dash (Linux* and macOS*) or slash (Windows*). For example:

- On Linux* and macOS* systems: This is incorrect: -Ec; this is correct: -E -c

- On Windows* systems: This is incorrect: /Ec; this is correct: /E /c

All compiler options are case sensitive. Some options have different meanings depending on their case; for example, option "c" prevents linking, but option "C" places comments in preprocessed source output.

Options specified on the command line apply to all files named on the command line.

Options can take arguments in the form of file names, strings, letters, or numbers. If a string includes spaces, the string must be enclosed in quotation marks. For example:

- On Linux* and macOS* systems, -unroll [=n] or -U name (string)

- On Windows* systems, /Fa myfile.s (file name) or /V"version 5.0" (string)

Compiler options can appear in any order.

On Windows* systems, all compiler options must precede /link options, if any, on the command line.

Unless you specify certain options, the command line will both compile and link the files you specify.

You can abbreviate some option names, entering as many characters as are needed to uniquely identify the option.

Certain options accept one or more keyword arguments following the option name. For example, the ax option accepts several keywords.

To specify multiple keywords, you typically specify the option multiple times.

Compiler options remain in effect for the whole compilation unless overridden by a compiler #pragma.

To disable an option, specify the negative form of the option.

On Windows* systems, you can also disable one or more optimization options by specifying option /Od last on the command line.

### Note

On Windows* systems, the /Od option is part of a mutually-exclusive group of options that includes /Od, /O1, /O2, /O3, and /Ox. The last of any of these options specified on the command line will override the previous options from this group.

If there are enabling and disabling versions of an option on the command line, the last one on the command line takes precedence.

## How We Refer to Compiler Option Names in Descriptions

The following conventions are used as shortcuts when referencing compiler option names in descriptions:

- Many options have names that are the same on Linux*, macOS*, and Windows*, except that the Windows form starts with an initial / and the Linux and macOS* form starts with an initial -. Within text, such option names are shown without the initial character; for example, check.

- Many options have names that are the same on Linux*, macOS*, and Windows*, except that the Windows form starts with an initial Q. Within text, such option names are shown as [Q]option-name.

  For example, if you see a reference to [Q]ipo, the Linux* and macOS* form of the option is -ipo and the Windows form of the option is /Qipo.

- Several compiler options have similar names except that the Linux* and macOS* forms start with an initial q and the Windows form starts with an initial Q. Within text, such option names are shown as [q or Q]option-name.

  For example, if you see a reference to [q or Q]opt-report, the Linux* and macOS* form of the option is -qopt-report and the Windows form of the option is /Qopt-report.

Compiler option names that are more dissimilar are shown in full.

Parent topic: Compiler Option Details