/Oy(框架指针省略)
此选项取消在调用堆栈上创建框架指针。
/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– 将禁用 /Oy,无论它是显式的还是隐式指定的。
/Oy 编译器选项使得调试器更加难以使用,这是因为编译器取消显示帧指针信息。 如果指定 debug 编译器选项(/Z7、/Zi、/ZI),则建议在任何其他优化编译器选项后指定 /Oy- 选项。
在 Visual Studio 开发环境中设置此编译器选项
打开项目的**“属性页”**对话框。 有关详细信息,请参见如何:打开项目属性页。
单击**“C/C++”**文件夹。
单击**“优化”**属性页。
修改**“省略框架指针”属性。 此属性仅添加或移除 /Oy 选项。 如果要添加 /Oy- 选项,请单击“命令行”并修改“附加选项”**。
以编程方式设置此编译器选项
- 请参见 OmitFramePointers。