VC编译器选项介绍 VC编译选项 /Od 禁用优化(默认值) disable optimizations (default) /Ox 最大化选项。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs) /Og 启用全局优化 enable global optimization /Oy[-] 启用框架指针省略 enable frame pointer omission /Oi 启用内建函数 enable intrinsic functions ### VC编译器选项详解 #### 一、代码优化选项 **1.1 /Od:禁用优化(默认值)** - **描述**:此选项禁用了编译器的优化功能,适合在开发阶段用于快速编译和调试。 - **用途**:在调试阶段使用,避免优化对调试过程的影响。 **1.2 /Ox:最大化优化** - **描述**:此选项开启了所有的优化选项,包括全局优化、内联函数等,适用于发布版本。 - **用途**:提高程序的运行效率,减少代码大小。 **1.3 /Og:启用全局优化** - **描述**:全局优化是在编译整个项目时进行优化的一种方式,能够更有效地管理代码。 - **用途**:提高程序的整体性能,特别是在多文件项目中效果明显。 **1.4 /Oy[-]:启用框架指针省略** - **描述**:此选项允许编译器省略函数调用栈上的框架指针,以减少内存使用。 - **用途**:在性能敏感的应用程序中减少内存开销。 **1.5 /Oi:启用内建函数** - **描述**:启用内建函数可以使编译器直接使用CPU指令,而不是通过函数调用来实现。 - **用途**:提高性能,尤其是在数学运算密集型的应用程序中。 #### 二、代码生成选项 **2.1 /G3:为80386进行优化** - **描述**:针对Intel 80386处理器进行优化。 - **用途**:早期的程序可能会使用这个选项来针对特定的硬件进行优化。 **2.2 /G4:为80486进行优化** - **描述**:针对Intel 80486处理器进行优化。 - **用途**:同样是为了提高程序在特定处理器上的运行效率。 **2.3 /GR[-]:启用C++RTTI** - **描述**:启用或禁用C++的运行时类型信息功能。 - **用途**:用于支持C++的动态类型识别功能,如`typeid`操作符。 **2.4 /G5:为Pentium进行优化** - **描述**:针对Intel Pentium处理器进行优化。 - **用途**:优化程序在Pentium处理器上的性能。 **2.5 /G6:为PentiumPro进行优化** - **描述**:针对Intel Pentium Pro处理器进行优化。 - **用途**:提高程序在Pentium Pro处理器上的运行速度。 **2.6 /GX[-]:启用C++异常处理(与/EHsc相同)** - **描述**:启用或禁用C++的异常处理机制。 - **用途**:提供异常处理功能,用于捕获和处理程序中的错误。 **2.7 /EHs:启用同步C++异常处理** - **描述**:启用同步的C++异常处理机制。 - **用途**:用于处理同步发生的异常情况。 **2.8 /GD:为WindowsDLL进行优化** - **描述**:针对Windows DLL文件进行优化。 - **用途**:提高DLL文件的加载速度和运行效率。 **2.9 /GB:为混合模型进行优化(默认)** - **描述**:默认的优化设置,适合大多数情况。 - **用途**:平衡性能和兼容性。 **2.10 /EHa:启用异步C++异常处理** - **描述**:启用异步的C++异常处理机制。 - **用途**:处理非同步发生的异常。 **2.11 /Gd:__cdecl调用约定** - **描述**:指定函数的调用约定为__cdecl。 - **用途**:控制参数传递的方式,以及清理调用栈的责任方。 **2.12 /Gr:__fastcall调用约定** - **描述**:指定函数的调用约定为__fastcall。 - **用途**:通过寄存器传递参数,提高函数调用的速度。 **2.13 /Gi[-]:启用增量编译** - **描述**:启用增量编译模式,仅重新编译修改过的文件。 - **用途**:加快编译过程,提高开发效率。 **2.14 /Gz:__stdcall调用约定** - **描述**:指定函数的调用约定为__stdcall。 - **用途**:通常用于Windows API函数。 **2.15 /Gm[-]:启用最小重新生成** - **描述**:当源文件发生更改时,只重新生成受到影响的部分。 - **用途**:加速编译过程。 **2.16 /GA:为Windows应用程序进行优化** - **描述**:针对Windows应用程序进行整体优化。 - **用途**:提高程序在Windows系统上的性能。 **2.17 /Gf:启用字符串池** - **描述**:将字符串常量合并到一个池中,减少重复的字符串。 - **用途**:节省内存空间。 **2.18 /QIfdiv[-]:启用Pentium FDIV修复** - **描述**:修复了Pentium处理器的浮点除法错误。 - **用途**:确保程序在Pentium处理器上的正确运行。 **2.19 /GF:启用只读字符串池** - **描述**:创建一个只读的字符串池。 - **用途**:进一步节省内存空间,并提高安全性。 **2.20 /Gy:分隔链接器函数** - **描述**:将每个函数的信息分离出来,供链接器单独处理。 - **用途**:有助于减少链接时间。 **2.21 /GZ:启用运行时调试检查** - **描述**:在运行时进行额外的调试检查。 - **用途**:帮助开发者发现潜在的问题。 **2.22 /Gh:启用钩子函数调用** - **描述**:允许用户在编译过程中插入自定义的钩子函数。 - **用途**:可用于扩展编译器的功能或行为。 **2.23 /Ge:对所有函数强制堆栈检查** - **描述**:强制编译器对每个函数进行堆栈检查。 - **用途**:提高程序的健壮性和稳定性。 **2.24 /Gs[num]:禁用堆栈检查调用** - **描述**:禁用堆栈检查,可以指定最大堆栈帧大小。 - **用途**:在不需要堆栈检查的情况下提高性能。 #### 三、输出文件选项 **3.1 /Fa[file]:命名程序集列表文件** - **描述**:指定程序集列表文件的名称。 - **用途**:记录编译过程中的信息。 **3.2 /Fo:命名对象文件** - **描述**:指定输出对象文件的名称。 - **用途**:便于管理和追踪编译过程中的对象文件。 **3.3 /FA[sc]:配置程序集列表** - **描述**:配置程序集列表的输出格式。 - **用途**:根据需要调整程序集列表的细节。 **3.4 /Fp:命名预编译头文件** - **描述**:指定预编译头文件的名称。 - **用途**:用于加速编译过程,尤其是大型项目。 **3.5 /Fd[file]:命名.PDB文件** - **描述**:指定程序数据库文件的名称。 - **用途**:保存调试信息,便于调试程序。 **3.6 /Fr[file]:命名源浏览器文件** - **描述**:指定源浏览器文件的名称。 - **用途**:帮助开发者快速浏览和理解源代码结构。 **3.7 /Fe:命名可执行文件** - **描述**:指定最终生成的可执行文件的名称。 - **用途**:方便管理不同的可执行文件版本。 **3.8 /FR[file]:命名扩展.SBR文件** - **描述**:指定扩展源浏览器文件的名称。 - **用途**:提供更多关于源代码的信息。 **3.9 /Fm[file]:命名映射文件** - **描述**:指定映射文件的名称。 - **用途**:显示程序各部分在内存中的布局情况。 #### 四、预处理器选项 **4.1 /FI:命名强制包含文件** - **描述**:指定必须包含的头文件。 - **用途**:确保这些文件被编译器包含。 **4.2 /C:不吸取注释** - **描述**:保留注释信息,不进行剥离。 - **用途**:保持源代码的原始信息。 **4.3 /U:移除预定义宏** - **描述**:移除指定的预定义宏。 - **用途**:控制宏定义,避免不必要的冲突。 **4.4 /D{=|#}:定义宏** - **描述**:定义宏及其对应的值。 - **用途**:用于条件编译或其他需要宏的地方。 **4.5 /u:移除所有预定义宏** - **描述**:移除所有预定义的宏。 - **用途**:完全控制编译器的行为。 **4.6 /E:将预处理定向到标准输出** - **描述**:将预处理的结果输出到标准输出流。 - **用途**:用于查看预处理的结果。 **4.7 /I:添加到包含文件的搜索路径** - **描述**:指定头文件的搜索路径。 - **用途**:便于查找外部的头文件。 **4.8 /EP:将预处理定向到标准输出,不要带行号** - **描述**:输出预处理结果,但不包含行号。 - **用途**:简化输出结果。 **4.9 /X:忽略“标准位置”** - **描述**:忽略标准的包含文件位置。 - **用途**:当使用非标准的位置存储头文件时。 **4.10 /P:预处理到文件** - **描述**:将预处理的结果写入到文件中。 - **用途**:方便查看和分析预处理后的源代码。 #### 五、语言选项 **5.1 /Zi:启用调试信息** - **描述**:生成调试信息,便于调试。 - **用途**:在调试版本中使用,提高调试效率。 **5.2 /Zl:忽略.OBJ中的默认库名** - **描述**:不包含默认的库名。 - **用途**:控制链接器的行为。 **5.3 /ZI:启用调试信息的“编辑并继续”功能** - **描述**:支持编辑并继续功能,可以在调试过程中修改代码。 - **用途**:提高开发效率,减少重新编译的时间。 以上就是VC编译器选项的一些关键知识点,通过合理地配置这些选项,开发者可以更好地控制编译过程,提高程序的性能和质量。
- 粉丝: 7
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 本资源库是关于“Java Collection Framework API”的参考资料,是 Java 开发社区的重要贡献,旨在提供有关 Java 语言学院 API 的实践示例和递归教育关系 .zip
- 插件: e2eFood.dll
- 打造最强的Java安全研究与安全开发面试题库,帮助师傅们找到满意的工作.zip
- (源码)基于Spark的实时用户行为分析系统.zip
- (源码)基于Spring Boot和Vue的个人博客后台管理系统.zip
- 将流行的 ruby faker gem 引入 Java.zip
- (源码)基于C#和ArcGIS Engine的房屋管理系统.zip
- (源码)基于C语言的Haribote操作系统项目.zip
- (源码)基于Spring Boot框架的秒杀系统.zip
- (源码)基于Qt框架的待办事项管理系统.zip