分享

按类别列出的编译器选项 | Microsoft Docs

 羊玉wngbx 2021-12-11

按类别列出的编译器选项

  • 项目

本文包含编译器选项的分类列表。 有关按字母顺序排列的列表,请参阅 按字母顺序列出的编译器选项

优化

优化
选项 目标
/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 视为 #includeimport

语言

语言
选项 目标
/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 中移除。 生成函数原型。

另请参阅

C/C++ 生成参考
MSVC 编译器选项
MSVC 编译器命令行语法

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多