/Oy(框架指针省略)
更新:2007 年 11 月
此选项取消在调用堆栈上创建框架指针。
/Oy[-]
备注
此选项可以加快函数调用的速度,因为无需设置和移除任何框架指针。它还可以使一个或多个寄存器(Intel 386 或更高版本中的 EBP)空闲出来,将其用于存储频繁使用的变量和子表达式。
/Oy 启用框架指针省略,而 /Oy- 禁止省略。/Oy 仅在 x86 编译器中可用。
如果代码需要基于 EBP 进行寻址,可以在 /Ox 选项后指定 /Oy– 选项,或使用带“y”和 off 参数的 optimize,以便通过基于 EBP 的寻址获得最大程度的优化。编译器可检测大部分需要基于 EBP 的寻址的情况(例如,使用 _alloca 和 setjmp 函数以及使用结构化异常处理的情况)。
/Ox(完全优化)(完全优化)和 /O1、/O2(最小化大小、最大化速度)(快速代码)选项包含 /Oy。在 /Ox、/O1 或 /O2 选项后指定 /Oy¡§C 将禁用 /Oy,无论它是显式的还是隐式指定的。
/Oy 编译器选项使得调试器更加难以使用,这是因为编译器取消显示帧指针信息。如果指定 debug 编译器选项(/Z7、/Zi、/ZI),则建议在任何其他优化编译器选项后指定 /Oy- 选项。
在 Visual Studio 开发环境中设置此编译器选项
打开该项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。
单击“C/C++”文件夹。
单击“优化”属性页。
修改“省略框架指针”属性。此属性仅添加或移除 /Oy 选项。如果要添加 /Oy- 选项,请单击“命令行”并修改“附加选项”。
以编程方式设置此编译器选项
- 请参见 OmitFramePointers。