本文包含编译器选项的分类列表。 有关按字母顺序排列的列表,请参阅 按字母顺序列出的编译器选项。
选项 | 目标 |
---|---|
/O1 | 创建小代码。 |
/O2 | 创建快速代码。 |
/Ob | 控制内联展开。 |
/Od | 禁用优化。 |
/Og | 已弃用。 使用全局优化。 |
/Oi | 生成内部函数。 |
/Os | 代码大小优先。 |
/Ot | 代码速度优先。 |
/Ox | 不包含/GF 或/Gy. 的/O2 子集 |
/Oy | 省略帧指针。 (仅限 x86) |
/favor | 生成针对一个指定体系结构或一系列体系结构进行优化的代码。 |
选项 | 目标 |
---|---|
/arch | 使用 SSE 或 SSE2 指令生成代码。 (仅限 x86) |
/clr | 生成要在公共语言运行时上运行的输出文件。 |
/EH | 指定异常处理模型。 |
/fp | 指定浮点行为。 |
/fpcvt | 指定浮点到无符号整数转换行为。 |
/GA | 针对 Windows 应用程序进行优化。 |
/Gd | 使用 __cdecl 调用约定。 (仅限 x86) |
/Ge | 已弃用。 激活堆栈探测。 |
/GF | 启用字符串池。 |
/Gh | 调用挂钩函数 _penter 。 |
/GH | 调用挂钩函数 _pexit 。 |
/GL | 启用全程序优化。 |
/Gm | 已弃用。 启用最小重新生成。 |
/GR | 启用运行时类型信息 (RTTI)。 |
/Gr | 使用 __fastcall 调用约定。 (仅限 x86) |
/GS | 检查缓冲区安全性。 |
/Gs | 控制堆栈探测。 |
/GT | 支持使用静态线程本地存储分配的数据的纤程安全。 |
/guard:cf | 添加控制流防护安全检查。 |
/guard:ehcont | 启用 EH 继续元数据。 |
/Gv | 使用 __vectorcall 调用约定。 (仅限 x86 和 x64) |
/Gw | 启用全程序全局数据优化。 |
/GX | 已弃用。 启用同步异常处理。 请改用 /EH。 |
/Gy | 启用函数级链接。 |
/GZ | 已弃用。 启用快速检查。 与) (相同 /RTC1 |
/Gz | 使用 __stdcall 调用约定。 (仅限 x86) |
/homeparams | 强制将传入寄存器的参数写入其在函数入口的堆栈上的位置。 此编译器选项仅适用于 x64 编译器 (本机编译和跨平台编译) 。 |
/hotpatch | 创建可热修补的映像。 |
/Qfast_transcendentals | 生成快速先验。 |
/QIfist | 已弃用。 当需要从浮点型转换为整型时,取消调用 Helper 函数 _ftol 。 (仅限 x86) |
/Qimprecise_fwaits | 移除 fwait 块中的 try 命令。 |
/QIntel-jcc-erratum | 缓解 Intel JCC 错误微代码更新对性能的影响。 |
/Qpar | 启用循环的自动并行化。 |
/Qpar-report | 启用自动并行化的报告级别。 |
/Qsafe_fp_loads | 将整数移动指令用于浮点值,并禁用特定浮点加载优化。 |
/Qspectre | 为 CVE 2017-5753 启用缓解,适用于一类 Spectre 攻击。 |
/Qspectre-load | 为每个加载指令生成序列化说明。 |
/Qspectre-load-cf | 为每个加载内存的控制流指令生成序列化说明。 |
/Qvec-report | 启用自动矢量化的报告级别。 |
/RTC | 启用运行时错误检查。 |
/volatile | 选择如何解释 volatile 关键字。 |
选项 | 目标 |
---|---|
/doc | 将文档注释处理到一个 XML 文件中。 |
/FA | 配置程序集列表文件。 |
/Fa | 创建程序集列表文件。 |
/Fd | 重命名程序数据库文件。 |
/Fe | 重命名可执行文件。 |
/Fi | 指定预处理输出文件名。 |
/Fm | 创建映射文件。 |
/Fo | 创建对象文件。 |
/Fp | 指定预编译头文件名。 |
, /Fr |
名称生成 .sbr 的浏览器文件。 |
选项 | 目标 |
---|---|
/AI | 指定在解析传递到 #using 指令的文件引用时搜索的目录。 |
/C | 在预处理期间保留注释。 |
/D | 定义常数和宏。 |
/E | 将预处理器输出复制到标准输出。 |
/EP | 将预处理器输出复制到标准输出。 |
/FI | 预处理指定的包含文件。 |
/FU | 强制使用文件名,就像它已被传递到 #using 指令一样。 |
/Fx | 将插入的代码与源文件合并。 |
/I | 在目录中搜索包含文件。 |
/P | 将预处理器输出写入文件。 |
/U | 移除预定义宏。 |
/u | 移除所有的预定义宏。 |
/X | 忽略标准包含目录。 |
选项 | 目标 |
---|---|
/exportHeader | 创建标头单元文件 (.ifc 由输入参数指定的) 。 |
/headerUnit | 指定在何处查找指定标头 () 的标头单元文件 .ifc 。 |
/headerName | 从指定的标头生成标题单元。 |
/reference | 使用命名模块 IFC。 |
/sourceDependencies | 列出所有源级别的依赖关系。 |
/sourceDependencies:directives | 列出模块和标头单元依赖关系。 |
/translateInclude | 视为 #include import 。 |
选项 | 目标 |
---|---|
/constexpr | constexpr 在编译时控制计算。 |
/openmp | #pragma omp在源代码中启用。 |
/vd | 取消或启用隐藏的 vtordisp 类成员。 |
/vmb | 对指向成员的指针使用最佳的基。 |
/vmg | 对指向成员的指针使用完全一般性。 |
/vmm | 声明多重继承。 |
/vms | 声明单一继承。 |
/vmv | 声明虚拟继承。 |
/Z7 | 生成与 C 7.0 兼容的调试信息。 |
/Za | 禁用 C89 语言扩展。 |
/Zc | 指定下的标准行为 /Ze 。 |
/Ze | 已弃用。 启用 C89 语言扩展。 |
/Zf | 在并行生成中改善 PDB 生成时间。 |
/ZH | 为调试信息中的校验和指定 MD5、SHA-1 或 SHA-256。 |
/ZI | 将调试信息包含在与“编辑并继续”兼容的程序数据库中。 (仅限 x86) |
/Zi | 生成完整的调试信息。 |
/Zl | 删除文件中的默认库名称 .obj 。 |
/Zp/Zp | 封装结构成员。 |
/Zs | 只检查语法。 |
/ZW | 生成要在 Windows 运行时上运行的输出文件。 |
选项 | 目标 |
---|---|
/F | 设置堆栈大小。 |
/LD | 创建动态链接库。 |
/LDd | 创建调试动态链接库。 |
/link | 将指定的选项传递给 LINK。 |
/LN | 创建 MSIL 模块。 |
/MD | 使用 msvcrt.lib编译以创建多线程 DLL。 |
/MDd | 使用 msvcrtd.lib编译以创建调试多线程 DLL。 |
/MT | 使用 libcmt.lib编译以创建多线程可执行文件。 |
/MTd | 使用 libcmtd.lib编译以创建调试多线程可执行文件。 |
选项 | 目标 |
---|---|
/? | 列出编译器选项。 |
@ | 指定响应文件。 |
/analyze | 启用代码分析。 |
/bigobj | 增加 .obj 文件中可寻址节的数目。 |
/c | 编译但不链接。 |
/cgthreads | 指定用于优化和代码生成的 cl.exe 线程数。 |
/errorReport | 已弃用。 错误报告由Windows 错误报告 (WER) 设置控制。 |
/external | 允许控制外部标头中的诊断。 |
/FC | 在诊断文本中显示传递给 cl.exe 的源代码文件的完整路径。 |
/FS | 强制写入 PDB 文件,以便通过 MSPDBSRV.EXE进行序列化。 |
/fsanitize | 启用 sanitizer 检测的编译,如 AddressSanitizer。 |
/fsanitize-coverage | 启用对库(如 LibFuzzer)的代码覆盖率检测的编译。 |
/H | 已弃用。 限制外部(公共)名称的长度。 |
/HELP | 列出编译器选项。 |
/J | 更改默认的 char 类型。 |
/JMC | 支持本机 c + + 仅我的代码调试。 |
/kernel | 编译器和链接器将创建可在 Windows 内核中执行的二进制文件。 |
/MP | 同时生成多个源文件。 |
/nologo | 取消显示登录版权标志。 |
/sdl | 启用更多安全功能和警告。 |
/showIncludes | 在编译期间显示所有包含文件的列表。 |
/Tc | 指定 C 源文件。 |
/TC | 指定所有源文件均为 C。 |
/Tp | 指定 C++ 源文件。 |
/TP | 指定所有源文件均为 c + +。 |
/V | 已弃用。 设置版本字符串。 |
/w | 禁用所有警告。 |
, /W1 , /W2 , /W3 , /W4 |
设置输出警告级别。 |
, /w2 , /w3 , /w4 |
针对指定的警告设置警告级别。 |
/Wall | 启用所有警告,包括默认情况下禁用的警告。 |
/wd | 禁用指定的警告。 |
/we | 将指定的警告视为错误。 |
/WL | 在从命令行编译 C++ 源代码时启用错误消息和警告消息的单行诊断。 |
/wo | 仅显示指定的警告一次。 |
/Wv | 禁用更高版本的编译器引入的警告。 |
/WX | 将警告视为错误。 |
/Yc | 创建 .PCH 文件。 |
/Yd | 已弃用。 将完整的调试信息放在所有对象文件中。 请改用 /Zi。 |
/Yl | 创建调试库时插入 PCH 引用。 |
/Yu | 在生成期间使用预编译头文件。 |
/Y- | 忽略当前生成中的所有其他预编译头编译器选项。 |
/Zm | 指定预编译头内存分配限制。 |
/await | ) 扩展启用协同程序 (可恢复的函数。 |
/source-charset | 设置源字符集。 |
/execution-charset | 设置执行字符集。 |
/utf-8 | 将源和执行字符集设置为 UTF-8。 |
/validate-charset | 仅验证 UTF-8 文件的兼容字符。 |
/diagnostics | 控制诊断消息的格式。 |
/permissive- | 设置标准一致性模式。 |
/std | C + + 标准版本兼容性选择器。 |
实验性选项只能由某些版本的编译器支持。 它们在不同的编译器版本中也可能具有不同的行为。 对于试验性选项,通常是最好的文档,也是 Microsoft c + + 团队博客。
选项 | 目标 |
---|---|
/experimental:module | 启用实验性模块支持。 |
/experimental:preprocessor | 已弃用。 启用实验相容预处理器支持。 使用 /Zc:preprocessor |
选项 | 目标 |
---|---|
/clr:noAssembly | 已弃用。 改用 (创建 MSIL 模块) 。 |
/errorReport | 已弃用。 错误报告由Windows 错误报告 (WER) 设置控制。 |
/Fr | 已弃用。 创建无局部变量的浏览信息文件。 |
/Ge | 已弃用。 激活堆栈探测。 默认已启用。 |
/Gm | 已弃用。 启用最小重新生成。 |
/GX | 已弃用。 启用同步异常处理。 请改用 /EH。 |
/GZ | 已弃用。 启用快速检查。 请改用 /RTC1。 |
/H | 已弃用。 限制外部(公共)名称的长度。 |
/Og | 已弃用。 使用全局优化。 |
/QIfist | 已弃用。 曾用来指定如何从浮点类型转换到整型类型。 |
/V | 已弃用。 设置 .obj 文件版本字符串。 |
/Wp64 | 已过时。 检测 64 位可移植性问题。 |
/Yd | 已弃用。 将完整的调试信息放在所有对象文件中。 请改用 /Zi。 |
/Zc:forScope- | 已弃用。 在 for 循环范围中禁用一致性。 |
/Ze | 已弃用。 启用语言扩展。 |
/Zg | 已在 Visual Studio 2015 中移除。 生成函数原型。 |
联系客服