/Oy(框架指针省略)
禁止在调用堆栈上创建帧指针。
语法
/Oy[-]
备注
此选项可以加快函数调用的速度,因为无需设置和移除任何框架指针。 它还将释放一个寄存器以用于常规用途。
/Oy 启用帧指针省略,/Oy- 禁用省略。 在 x64 编译器中,/Oy 和 /Oy- 不可用。
如果你的代码需要基于帧的寻址,你可以在 /Ox 选项之后指定 /Oy- 选项,或者使用带有“y”和 off 参数的 optimize,从而通过基于帧的寻址获得最大优化。 编译器可检测大部分需要基于帧的寻址的情况(例如,使用 _alloca
和 setjmp
函数以及使用结构化异常处理的情况)。
/Ox(启用大多数速度优化)和 /O1、/O2(最大程度减小大小,提高速度)选项意味着使用 /Oy。 在 /Ox 、/O1 或 /O2 选项之后指定 /Oy- 会禁用 /Oy,无论 /Oy 是显式的还是隐含的。
/Oy 编译器选项使得调试器更加难以使用,这是因为编译器取消显示帧指针信息。 如果指定 debug 编译器选项(/Z7、/Zi、/ZI),则建议你在任何其他优化编译器选项后指定 /Oy- 选项。
在 Visual Studio 开发环境中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“优化”属性页面。
修改“省略框架指针”属性。 此属性仅添加或移除 /Oy 选项。 如果要添加 /Oy- 选项,请选择“命令行”属性页并修改“其他选项”。
以编程方式设置此编译器选项
- 请参阅 OmitFramePointers。