按字母顺序列出的编译器选项
此表包含按字母顺序列出的编译器选项列表。 有关按类别列出的编译器选项列表,请参阅按类别列出的编译器选项一文。
编译器选项
选项 | 目的 |
---|---|
@ |
指定响应文件。 |
/? |
列出编译器选项。 |
/AI<dir> |
指定在解析传递到 #using 指令的文件引用时搜索的目录。 |
/analyze |
启用代码分析。 |
/arch |
最低 CPU 架构要求。 |
/arm64EC |
生成与 arm64EC ABI 兼容的代码。 |
/await |
启用协同例程(可恢复函数)扩展。 |
/await:strict |
使用早期语言版本启用标准 C++20 协同例程支持。 |
/bigobj |
增加 .obj 文件中可寻址节的数目。 |
/C |
在预处理期间保留注释。 |
/c |
编译但不链接。 |
/cgthreads |
指定 cl.exe 线程数以用于优化和代码生成。 |
/clr |
生成要在公共语言运行时上运行的输出文件。 |
/clr:implicitKeepAlive- |
关闭 System::GC::KeepAlive(this) 的隐式显示。 |
/clr:initialAppDomain |
启用 Visual C++ 2002 的初始 AppDomain 行为。 |
/clr:netcore |
生成以 .NET Core 运行时为目标的程序集。 |
/clr:noAssembly |
不要生成程序集。 |
/clr:nostdimport |
不要隐式导入任何必需的程序集。 |
/clr:nostdlib |
搜索程序集时忽略系统 .NET Framework 目录。 |
/clr:pure |
生成仅包含 IL 的输出文件(没有本机可执行代码)。 |
/clr:safe |
生成只包含 IL 的可验证输出文件。 |
/constexpr:backtrace<N> |
在诊断中显示 N 个 constexpr 评估(默认值:10)。 |
/constexpr:depth<N> |
constexpr 评估的递归深度限制(默认值:512)。 |
/constexpr:steps<N> |
在 N 步后终止 constexpr 评估(默认值:100000) |
/D<name>{=|#}<text> |
定义常数和宏。 |
/diagnostics |
诊断格式:打印列信息。 |
/diagnostics:caret[-] |
诊断格式:打印列和指示的源行。 |
/diagnostics:classic |
使用旧诊断格式。 |
/doc |
将文档注释处理到一个 XML 文件中。 |
/E |
将预处理器输出复制到标准输出。 |
/EHa |
启用 C++ 异常处理(出现 SEH 异常)。 |
/EHc |
extern "C" 默认为 nothrow 。 |
/EHr |
始终生成 noexcept 运行时终止检查。 |
/EHs |
启用 C++ 异常处理(无 SEH 异常)。 |
/EP |
将预处理器输出复制到标准输出。 |
/errorReport |
已弃用。 Windows 错误报告 (WER) 设置控制错误报告。 |
/execution-charset |
设置执行字符集。 |
/experimental:log |
启用试验性结构化 SARIF 输出。 |
/experimental:module |
启用实验性模块支持。 |
/exportHeader |
创建由输入参数指定的标头单元文件 (.ifc )。 |
/external:anglebrackets |
将通过 <> 包含的所有标头视为外部标头。 |
/external:env:<var> |
指定具有外部标头位置的环境变量。 |
/external:I <path> |
指定外部标头的位置。 |
/external:templates[-] |
跨模板实例化链评估警告等级。 |
/external:W<n> |
设置外部标头的警告等级。 |
/F |
设置堆栈大小。 |
/FA |
配置程序集列表文件。 |
/Fa |
创建程序集列表文件。 |
/fastfail |
启用快速失败模式。 |
/favor:<blend|AMD64|INTEL64|ATOM> |
生成针对一个指定体系结构或一系列体系结构进行优化的代码。 |
/FC |
在诊断文本中显示传递给 cl.exe 的源代码文件的完整路径。 |
/Fd |
重命名程序数据库文件。 |
/Fe |
重命名可执行文件。 |
/feature |
启用体系结构功能。17.10 |
/FI<file> |
预处理指定的包含文件。 |
/Fi |
指定预处理输出文件名。 |
/Fm |
创建映射文件。 |
/Fo |
创建对象文件。 |
/Fp |
指定预编译头文件名。 |
/fp:contract |
生成代码时考虑浮点收缩。 |
/fp:except[-] |
生成代码时考虑浮点异常。 |
/fp:fast |
“fast”浮点模型;结果可预测性较低。 |
/fp:precise |
“precise”浮点模型;结果可预测。 |
/fp:strict |
“strict”浮点模型(隐含 /fp:except )。 |
/fpcvt:BC |
向后兼容的浮点数到无符号整数的转换。 |
/fpcvt:IA |
Intel 本机浮点数到无符号整数的转换行为。 |
/FR , /Fr |
命名生成的 .sbr 浏览器文件。 /Fr 已弃用。 |
/FS |
强制写入到 PDB 文件以通过 MSPDBSRV.EXE 序列化。 |
/fsanitize |
启用擦除器检测(如 AddressSanitizer)的编译。 |
/fsanitize-coverage |
为库(如 LibFuzzer)启用代码覆盖率检测的编译。 |
/Ft<dir> |
为 #import 生成的头文件的位置。 |
/FU<file> |
强制使用文件名,就像它已被传递到 #using 指令一样。 |
/Fx |
将插入的代码与源文件合并。 |
/GA |
针对 Windows 应用程序进行优化。 |
/Gd |
使用 __cdecl 调用约定。 (仅限 x86) |
/Ge |
已弃用。 激活堆栈探测。 |
/GF |
启用字符串池。 |
/GH |
调用挂钩函数 _pexit 。 |
/Gh |
调用挂钩函数 _penter 。 |
/GL[-] |
启用全程序优化。 |
/Gm[-] |
已弃用。 启用最小重新生成。 |
/GR[-] |
启用运行时类型信息 (RTTI)。 |
/Gr |
使用 __fastcall 调用约定。 (仅限 x86) |
/GS[-] |
检查缓冲区安全性。 |
/Gs[n] |
控制堆栈探测。 |
/GT |
支持使用静态线程本地存储分配的数据的纤程安全。 |
/Gu[-] |
确保 distinct 函数具有非重复地址。 |
/guard:cf[-] |
添加控制流防护安全检查。 |
/guard:ehcont[-] |
启用 EH 延续元数据。 |
/Gv |
使用 __vectorcall 调用约定。 (仅限 x86 和 x64) |
/Gw[-] |
启用全程序全局数据优化。 |
/GX[-] |
已弃用。 启用同步异常处理。 请改用 /EH 。 |
/Gy[-] |
启用函数级链接。 |
/GZ |
已弃用。 启用快速检查。 (与 /RTC1 相同) |
/Gz |
使用 __stdcall 调用约定。 (仅限 x86) |
/H |
已弃用。 限制外部(公共)名称的长度。 |
/headerName |
根据指定的标头生成标头单元。 |
/headerUnit |
指定在何处查找指定标头的标头单元文件 (.ifc )。 |
/HELP |
列出编译器选项。 |
/homeparams |
强制将传入寄存器的参数写入其在函数入口的堆栈上的位置。 此编译器选项仅适用于 x64 编译器(本机编译和跨平台编译)。 |
/hotpatch |
创建可热修补的映像。 |
/I<dir> |
在目录中搜索包含文件。 |
/ifcOutput |
指定生成的 .ifc 文件的输出文件名或目录。 |
/interface |
将输入文件视为模块接口单元。 |
/internalPartition |
将输入文件视为内部分区单元。 |
/J |
更改默认的 char 类型。 |
/jumptablerdata |
在 .rdata 节中放置 switch case 语句跳转表。 |
/JMC |
支持本机 C++“仅我的代码”调试。 |
/kernel |
编译器和链接器创建可在 Windows 内核中执行的二进制文件。 |
/LD |
创建动态链接库。 |
/LDd |
创建调试动态链接库。 |
/link |
将指定的选项传递给 LINK。 |
/LN |
创建 MSIL .netmodule 。 |
/MD |
使用 MSVCRT.lib 编译以创建多线程 DLL。 |
/MDd |
使用 MSVCRTD.lib 编译以创建调试多线程 DLL。 |
/MP |
同时生成多个源文件。 |
/MT |
使用 LIBCMT.lib 编译以创建多线程可执行文件。 |
/MTd |
使用 LIBCMTD.lib 编译以创建调试多线程可执行文件。 |
/nologo |
取消显示登录版权标志。 |
/O1 |
创建小代码。 |
/O2 |
创建快速代码。 |
/Ob<n> |
控制内联展开。 |
/Od |
禁用优化。 |
/Og |
已弃用。 使用全局优化。 |
/Oi[-] |
生成内部函数。 |
/openmp |
在源代码中启用 #pragma omp 。 |
/openmp:experimental |
启用 OpenMP 2.0 语言扩展并选择 OpenMP 3.0+ 语言扩展。 |
/openmp:llvm |
使用 LLVM 运行时的 OpenMP 语言扩展。 |
/options:strict |
无法识别的编译器选项是错误。 |
/Os |
代码大小优先。 |
/Ot |
代码速度优先。 |
/Ox |
不包含 /GF 或 /Gy 的 /O2 子集。 |
/Oy |
省略帧指针。 (仅限 x86) |
/P |
将预处理器输出写入文件。 |
/PD |
打印所有宏定义。 |
/permissive[-] |
设置标准一致性模式。 |
/PH |
预处理时生成 #pragma file_hash 。 |
/presetPadding |
将基于堆栈的类类型的填充初始化为零。 |
/Qfast_transcendentals |
生成快速先验。 |
/QIfist |
已弃用。 当需要从浮点型转换为整型时,取消调用 Helper 函数 _ftol 。 (仅限 x86) |
/Qimprecise_fwaits |
移除 fwait 块中的 try 命令。 |
/QIntel-jcc-erratum |
缓解 Intel JCC Erratum 微代码更新的性能影响。 |
/Qpar-report:<n> |
启用自动并行化的报告级别。 |
/Qpar |
启用循环的自动并行化。 |
/Qsafe_fp_loads |
将整数移动指令用于浮点值,并禁用特定浮点加载优化。 |
/Qspectre[-] |
针对一类 Spectre 攻击启用 CVE 2017-5753 缓解措施。 |
/Qspectre-load |
为每个加载指令生成序列化指令。 |
/Qspectre-load-cf |
为每个加载内存的控制流指令生成序列化指令。 |
/Qvec-report:<n> |
启用自动矢量化的报告级别。 |
/reference |
使用命名模块 IFC。 |
/RTC1 |
启用快速运行时检查(相当于 /RTCsu )。 |
/RTCc |
在运行时转换为较小的类型检查。 |
/RTCs |
启用堆栈帧运行时检查。 |
/RTCu |
启用未初始化的本地使用情况检查。 |
/scanDependencies |
以 C++ 标准 JSON 格式列出模块依赖项。 |
/sdl |
启用更多安全功能和警告。 |
/showIncludes |
在编译期间显示所有包含文件的列表。 |
/source-charset |
设置源字符集。 |
/sourceDependencies |
列出所有源级依赖项。 |
/sourceDependencies:directives |
列出模块和标头单元依赖项。 |
/std:c++14 |
C++14 标准 ISO/IEC 14882:2014(默认)。 |
/std:c++17 |
C++17 标准 ISO/IEC 14882:2017。 |
/std:c++20 |
C++20 标准 ISO/IEC 14882:2020。 |
/std:c++latest |
最新的草案 C++ 标准预览功能。 |
/std:c11 |
C11 标准 ISO/IEC 9899:2011。 |
/std:c17 |
C17 标准 ISO/IEC 9899:2018。 |
/std:clatest |
最新的草案 C 标准预览功能。 |
/TC |
指定所有源文件都是 C。 |
/Tc |
指定 C 源文件。 |
/TP |
指定所有源文件都是 C++。 |
/Tp |
指定 C++ 源文件。 |
/translateInclude |
将 #include 视为 import 。 |
/U<name> |
移除预定义宏。 |
/u |
移除所有的预定义宏。 |
/utf-8 |
将源和执行字符集设置为 UTF-8。 |
/V |
已弃用。 设置版本字符串。 |
/validate-charset |
验证 UTF-8 文件以仅查找兼容的字符。 |
/vd{0|1|2} |
取消或启用隐藏的 vtordisp 类成员。 |
/vlen |
指定向量长度。 |
/vmb |
对指向成员的指针使用最佳的基。 |
/vmg |
对指向成员的指针使用完全一般性。 |
/vmm |
声明多重继承。 |
/vms |
声明单一继承。 |
/vmv |
声明虚拟继承。 |
/volatile:iso |
acquire/release 语义在 volatile 访问中不能得到保证。 |
/volatile:ms |
acquire/release 语义在 volatile 访问中得到保证。 |
/volatileMetadata |
对易失存储器访问生成元数据。 |
/w |
禁用所有警告。 |
/W0 、、/W1 /W2 、/W3 、/W4 |
设置输出警告等级。 |
/w1<n> 、、/w2<n> /w3<n> 、、/w4<n> |
针对指定的警告设置警告等级。 |
/Wall |
启用所有警告,包括默认情况下禁用的警告。 |
/wd<n> |
禁用指定的警告。 |
/we<n> |
将指定的警告视为错误。 |
/WL |
在从命令行编译 C++ 源代码时启用错误消息和警告消息的单行诊断。 |
/wo<n> |
仅显示一次指定的警告。 |
/Wv:xx[.yy[.zzzzz]] |
禁用编辑器的指定版本后引入的警告。 |
/WX |
将警告视为错误。 |
/X |
忽略标准包含目录。 |
/Y- |
忽略当前生成中的所有其他预编译头编译器选项。 |
/Yc |
创建 .PCH 文件。 |
/Yd |
已弃用。 将完整的调试信息放在所有对象文件中。 请改用 /Zi 。 |
/Yl |
创建调试库时插入 PCH 引用。 |
/Yu |
在生成期间使用预编译头文件。 |
/Z7 |
生成与 C 7.0 兼容的调试信息。 |
/Za |
在 C 代码中禁用某些 C89 语言扩展。 |
/Zc:__cplusplus[-] |
启用 __cplusplus 宏以报告支持的标准(默认关闭)。 |
/Zc:__STDC__ |
启用 __STDC__ 宏以报告支持C标准(默认关闭)。 |
/Zc:alignedNew[-] |
启用 C++17 过度对齐的动态分配(在 C++17 中默认启用)。 |
/Zc:auto[-] |
对 auto 强制执行新的标准 C++ 含义(默认开启)。 |
/Zc:char8_t[-] |
启用或禁用作为 const char8_t 的 C++20 本机 u8 文本支持(默认关闭,在 /std:c++20 下除外)。 |
/Zc:enumTypes[-] |
为 enum 类型推导启用标准 C++ 规则(默认关闭)。 |
/Zc:externC[-] |
对 extern "C" 函数(由 /permissive- 隐含)强制实施标准 C++ 规则。 |
/Zc:externConstexpr[-] |
为 constexpr 变量启用外部链接(默认关闭)。 |
/Zc:forScope[-] |
强制实施标准 C++ for 范围规则(默认开启)。 |
/Zc:gotoScope |
围绕局部变量初始化(/permissive- 隐含)强制实施标准 C++ goto 规则。 |
/Zc:hiddenFriend[-] |
强制实施标准 C++ 隐藏友元规则(由 /permissive- 隐含) |
/Zc:implicitNoexcept[-] |
在所需函数上启用隐式 noexcept (默认开启)。 |
/Zc:inline[-] |
如果它们是 COMDAT 或仅具有内部链接,则删除未引用的函数或数据(默认关闭)。 |
/Zc:lambda[-] |
为泛型 lambda 中的一致性模式语法检查启用新的 lambda 处理器。 |
/Zc:noexceptTypes[-] |
强制实施 C++17 noexcept 规则(在 C++17 或更高版本中默认开启)。 |
/Zc:nrvo[-] |
启用可选复制和移动省略(默认在 /O2 、/permissive- 或 /std:c++20 或更高版本下启用)。 |
/Zc:preprocessor[-] |
使用新的符合性预处理器(默认关闭,在 C11/C17 中除外)。 |
/Zc:referenceBinding[-] |
UDT 临时不会绑定到非 const lvalue 引用(默认关闭)。 |
/Zc:rvalueCast[-] |
强制实施标准 C++ 显式类型转换规则(默认关闭)。 |
/Zc:sizedDealloc[-] |
启用 C++14 全局大小解除分配函数(默认开启)。 |
/Zc:strictStrings[-] |
禁用字符串文本到 char* 或 wchar_t* 的转换(默认关闭)。 |
/Zc:templateScope[-] |
强制实施标准 C++ 模板参数阴影规则(默认关闭)。 |
/Zc:ternary[-] |
对操作数类型强制实施条件运算符规则(默认关闭)。 |
/Zc:threadSafeInit[-] |
启用线程安全的本地静态初始化(默认开启)。 |
/Zc:throwingNew[-] |
假设 operator new 在失败时引发(默认关闭)。 |
/Zc:tlsGuards[-] |
生成 TLS 变量初始化的运行时检查(默认启用)。 |
/Zc:trigraphs |
启用三元组(已过时,默认关闭)。 |
/Zc:twoPhase[-] |
使用不符合模板分析行为(默认符合)。 |
/Zc:wchar_t[-] |
wchar_t 是本机类型,而不是 typedef(默认开启)。 |
/Zc:zeroSizeArrayNew[-] |
为零大小的对象数组调用成员 new /delete (默认启用)。 |
/Ze |
已弃用。 启用 C89 语言扩展。 |
/Zf |
在并行生成中改进 PDB 生成时间。 |
/ZH:[MD5|SHA1|SHA_256] |
为调试信息中的校验和指定 MD5、SHA-1 或 SHA-256。 |
/ZI |
将调试信息包含在与“编辑并继续”兼容的程序数据库中。 (仅限 x86) |
/Zi |
生成完整的调试信息。 |
/Zl |
从 .obj 文件中移除默认库名。 |
/Zm |
指定预编译头内存分配限制。 |
/Zo[-] |
为优化的代码生成更丰富的调试信息。 |
/Zp[n] |
封装结构成员。 |
/Zs |
只检查语法。 |
/ZW |
生成要在 Windows 运行时上运行的输出文件。 |
17.10 从 Visual Studio 2022 版本 17.10 开始,此选项可用。