| Option | Description |
|---|---|
| /? | Display a list of compiler options with descriptions. |
| /B"options" | Pass options to linker, in addition to default options. |
| /C[+|-] | Perform compile without linking, instead of compiling and linking. |
| /Dname | Define preprocessor macros. |
| /Fa[+|-][dir][name] | Produce, name, and direct assembler listing file. |
| /Fc[+|-] | Perform syntax check only, instead of a full compile. |
| /Fename | Specify name of executable output file. |
| /Fi[+|-][dir][name] | Produce, name, and direct a precompiled header file. |
| /Fl[+|-][dir][name] | Produce, name, and direct listing file. |
| /Fm[+|-] | Produce and name linker map file. |
| /Fn[+|-][dir][name] | Produce, name, and direct assembler listing file with source and machine code as comments. |
| /Fo[+|-][dir][name] | Control and name object file. |
| Control and direct files for template resolution. | |
| /G[3|4|5] | Specify the processor for which the code is optimized. |
| /Gd[+|-] | Dynamically link to the runtime library, instead of linking statically. |
| /Ge[+|-] | Build .exe or .dll file. |
| /Gf[+|-] | Use fast floating-point execution. |
| /Gi[+|-] | Use fast integer execution. |
| Link with Version 2 C++ libraries. | |
| /Gl[+|-] | Remove unreferenced functions. |
| /Gm[+|-] | Link with the multithread library, instead of the single-thread library. |
| /Gn[+|-] | Hide default library information from linker. |
| Support parmdwords | |
| Generate code to run at ring 0. | |
| /Gs[+|-] | Remove stack probes. |
| Support tiled memory. | |
| Support development of virtual device drivers. | |
| Remove C++ exception handling information. | |
| Decorate all external names with a leading underscore. | |
| /Hnum | Set maximum length of external names. |
| /Ipath[path] | Specify include search paths, in addition to directory of source file and paths in INCLUDE. |
| /J[+|-] | Treat unspecified char variables as signed char, instead of unsigned char. |
| /L[+|-] | Produce a minimal listing file. |
| /La[+|-] | Include a minimal layout in the listing file, showing referenced struct and union variables. |
| /Lb[+|-] | Include a layout in the listing file, showing all struct and union variables. |
| /Le[+|-] | Expand macros in the listing file. |
| /Lf[+|-] | Set all listing options on. |
| /Li[+|-] | Expand user include files in the listing file. |
| /Lj[+|-] | Expand user and system include files in the listing file. |
| /Lpnum | Set page length of listing file. |
| /Ls[+|-] | Include the source code in the listing file. |
| /Lt"string" | Set title string for the listing file. |
| /Lu"string" | Set subtitle string in the listing file. |
| /Lx[+|-] | Generate a minimal cross-reference table in the listing file. |
| /Ly[+|-] | Generate a cross-reference table in the listing file. |
| /M[p|s|c|t] | Set default calling convention. |
| /Nn | End compilation when error count reaches n. |
| /Ndname | Set names of default data, uninitialized data, and constant segments. |
| /Ntname | Set names of default code or text segment. |
| Set names of exception-handling segments. | |
| /O[+|-|2|3] | Optimize code. |
| /Oc[+|-] | Optimize code for size. |
| /Oi[+|-] /Oi[value] |
Inline user functions. |
| /Om[+|-] | Limit working set size. |
| /Op[+|-] | Perform optimizations that involve the stack pointer. |
| /Oq[+|-] | Control stackchaining. |
| /Os[+|-] | Invoke the instruction scheduler. |
| /P[+|-] | Run the preprocessor only, instead of a full compile. |
| /Pc[+|-] | Preserve source code comments in preprocessor output. |
| /Pd[+|-] | Redirect preprocessor output to stdout. |
| /Pe[+|-] | Suppress #line directives in preprocessor output. |
| /Q[+|-] | Suppress the compiler logo when invoking the compiler. |
| /qalias | Specify which aliasing rules can be used during optimization. |
| /qarch | Specify architecture on which executable will run. |
| Import all external references. | |
| Turn static, nonconstant data into thread-local data. | |
| /qbitfields | Specify default sign of bitfields. |
| /qdbgunref | Use referenced and unreferenced symbols during debugging. |
| /qdigraph | Permit digraph and keyword operators. |
| /qignerrno | Optimize without reference to errno |
| /qignprag=[disjoint |isolated|all] | Ignore references to #pragma disjoint and #pragma isolated_call. |
| /qinitauto=hex_value | Initialize automatic storage |
| /qisolated_call | List functions that do not change data objects at time of function call. |
| /qlibansi | Process ANSI C library names as system functions. |
| /qlonglong | Process or disallow data type of LONG LONG INT. |
| /qmakedep | Create dependency files to include in makefile. |
| /qro | Use read-only storage for string literals. |
| Generate information for the typeid operator and the dynamic_cast operator. | |
| Use volatile on attribute prototypes. | |
| /qtune=option | Specify the processor for which code is optimized. |
| /R[e|n] | Generate code that can be used as a subsystem without a runtime environment. |
| /S[a|c|e|2] | Set language level. |
| /Sd[+|-] | Set the default file extension for source files to .c, instead of .obj. |
/Sg[-] |
Set left and right margins for the input file, and ignore text outside these margins. |
| /Sh[+|-] | Allow use of ddnames. |
| /Si[+|-] | Use precompiled header files, if they exist and are current. |
| /Sm[+|-] | Ignore obsolete keywords, instead of treating them like any other identifier. |
| /Sn[+|-] | Allow use of DBCS. |
| /Sp[1|2|4|8|16] | Specify alignment or packing of data items within structures and unions. |
| Ignore text in specified columns, instead of processing all the contents of the input file. | |
| Use old-style rules for type conversion, instead of new-style rules. | |
| Allow double slashes to indicate comments. | |
| /Su[+|-|1|2|4] | Control size of enum variables, instead of using the SAA rules. |
| /Sv[+|-] | Allow use of memory files. |
| /Tcfilename | Compile filename as a C source file, regardless of its extension. |
| /Td[c|p] | Specify the default language (C or C++) for files, instead of compiling according to the file extension. |
| /Ti[+|-] | Generate debugger information. |
| /Tm[+|-] | Enable debug version of memory management functions. |
| /Tn[+|-] | Generate partial debugger information. |
| /Tpfilename | Compile the following file as a C++ source file, regardless of its extension. |
| /Tx[+|-] | Provide a complete machine-state dump when an exception occurs, instead of providing only the exception message and address. |
| /U[name|*] | Undefine macros. |
| /V"string" | Include a version string in the object and executable files. |
| /W[0|1|2|3] | Set severity level of messages the compiler produces and counts. |
| /Wgrp[+|-][grp] | Generate or suppress messages in the grp group. |
| /Xc[+|-] | Do not search paths specified using /I. |
| /Xi[+|-] | Do not search paths specified in INCLUDE. |
![]()
Summary of Compiler Options by Function