Visual C++ 编译器选项
优化
/O1 | 创建小代码 |
/O2 | 创建快速代码 |
/Oa | 假设没有别名 |
/Ob | 控制内联展开 |
/Od | 禁用优化 |
/Og | 使用全局优化 |
/Oi | 生成内部函数 |
/Op | 改善浮点数一致性 |
/Os | 代码大小优先 |
/Ot | 代码速度优先 |
/Ow | 假定在函数调用中使用别名 |
/Ox | 使用最大优化 (/Ob2gity /Gs) |
/Oy | 省略框架指针 |
代码生成
/arch | 使用 SSE 或 SSE2 指令生成代码 |
/clr | 启用 C++ 的托管扩展并产生在公共语言运行库上运行的输出文件 |
/EH | 指定异常处理模型 |
/G3 | 优化代码以优选 386 处理器。在 Visual C++ 5.0 中已经停用,编译器将忽略此选项 |
/G4 | 优化代码以优选 486 处理器。在 Visual C++ 5.0 中已经停用,编译器将忽略此选项 |
/G5 | 优化代码以优选 Pentium |
/G6 | 优化代码以优选 Pentium Pro、Pentium II 和 Pentium III 处理器 |
/G7 | 针对 Pentium 4 或 Athlon 优化代码。 |
/GB | 与 /G6 等效;将 _M_IX86 的值设置为 600 |
/Gd | 使用 __cdecl 调用约定 |
/Ge | 激活堆栈探测 |
/GF /Gf |
启用字符串池 |
/Gh | 调用挂钩函数 _penter |
/GH | 调用挂钩函数 _pexit |
/GL | 启用全程序优化 |
/Gm | 启用最小重新生成 |
/GR | 启用运行时类型信息 (RTTI) |
/Gr | 使用 __fastcall 调用约定 |
/Gs | 控制堆栈探测 |
/GT | 支持使用静态线程本地存储区分配的数据的纤程安全 |
/GX | 启用同步异常处理 |
/Gy | 启用函数级链接 |
/Gz | 使用 __stdcall 调用约定 |
/MD | 使用 MSVCRT.lib 创建多线程 DLL |
/MDd | 使用 MSVCRTD.lib 创建调试多线程 DLL |
/ML | 使用 LIBC.lib 创建单线程可执行文件 |
/MLd | 使用 LIBCD.lib 创建调试单线程可执行文件 |
/MT | 使用 LIBCMT.lib 创建多线程可执行文件 |
/MTd | 使用 LIBCMTD.lib 创建调试多线程可执行文件 |
输出文件
/FA /Fa |
创建列表文件 设置列表文件名 |
/Fd | 重命名程序数据库文件 |
/Fe | 重命名可执行文件 |
/Fm | 创建映射文件 |
/Fo | 创建对象文件 |
/Fp | 指定预编译头文件名 |
/FR /FR |
生成浏览器文件 |
/Fx | 将插入的代码与源文件合并 |
调试
/GS | 缓冲区安全检查 |
/GZ | 与 /RTC1 相同 |
/RTC | 启用运行时错误检查 |
/Wp64 | 检测 64 位可移植性问题 |
/Yd | 将完整的调试信息放在所有对象文件中 |
/Yl | 创建调试库时插入 PCH 引用 |
/Z7 | 生成与 C 7.0 兼容的调试信息 |
/Zd | 生成行号 |
/Zi | 生成完整的调试信息 |
预处理器
/AI | 指定在解析传递到 #using 指令的文件引用时搜索的目录 |
/C | 在预处理期间保留注释 |
/D | 定义常数和宏 |
/E | 将预处理器输出复制到标准输出 |
/EP | 将预处理器输出复制到标准输出 |
/Fl | 预处理指定的包含文件 |
/FU | 强制使用文件名,就像它已被传递到 #using 指令一样 |
/I | 在目录中搜索包含文件 |
/P | 将预处理器输出写入文件 |
/U | 移除预定义宏 |
/u | 移除所有的预定义宏 |
/X | 忽略标准包含目录 |
/ZI | 将调试信息包含在与“编辑并继续”兼容的程序数据库中 |
语言
/vd | 取消或启用隐藏的 vtordisp 类成员 |
/vmb | 对指向成员的指针使用最佳的基 |
/vmg | 对指向成员的指针使用完全一般性 |
/vmm | 声明多重继承 |
/vms | 声明单一继承 |
/vmv | 声明虚拟继承 |
/Za | 禁用语言扩展 |
/Zc | 在 /Ze 下指定标准行为 |
/Ze | 启用语言扩展 |
/Zg | 生成函数原型 |
/Zl | 从 .obj 文件中移除默认库名 |
/Zp n | 封装结构成员 |
/Zs | 只检查语法 |
链接
/F | 设置堆栈大小 |
/LD | 创建动态链接库 |
/LDd | 创建调试动态链接库 |
/link | 将指定的选项传递给 LINK |
/MD | 使用 MSVCRT.lib 编译以创建多线程 DLL |
/MDd | 使用 MSVCRTD.lib 编译以创建调试多线程 DLL |
/ML | 使用 LIBC.lib 编译以创建单线程可执行文件 |
/MLd | 使用 LIBCD.lib 编译以创建调试单线程可执行文件 |
/MT | 使用 LIBCMT.lib 编译以创建多线程可执行文件 |
/MTd | 使用 LIBCMTD.lib 编译以创建调试多线程可执行文件 |
预编译头
杂项
@ | 指定响应文件 |
/? | 列出编译器选项 |
/c | 编译但不链接 |
/H | 限制外部(公共)名称的长度 |
/HELP | 列出编译器选项 |
/J | 更改默认的 char 类型 |
/nologo | 取消显示登录版权标志 |
/QI0f | 确保 Pentium 0F 指令没有问题 |
/QIfdiv | FDIV、FPREM、FPTAN 和 FPATAN 指令有缺陷的 Intel Pentium 微处理器的变通方法 |
QIfist | 当需要从浮点类型转换为整型时取消 Helper 函数 _ftol 的调用 |
/showIncludes | 在编译期间显示所有包含文件的列表 |
/Tc /TC |
指定 C 源文件 |
/Tp /TP |
指定 C++ 源文件 |
/V | 设置版本字符串 |
/W | 设置警告等级 |
/w | 禁用所有警告 |
/Wall | 启用所有警告,包括默认情况下禁用的警告 |
/WL | 在从命令行编译 C++ 源代码时启用错误信息和警告消息的单行诊断 |
/Zm | 指定预编译头内存分配限制 |