/Oy(框架指针省略)

禁止在调用堆栈上创建帧指针。

语法

/Oy[-]

备注

此选项可以加快函数调用的速度,因为无需设置和移除任何框架指针。 它还将释放一个寄存器以用于常规用途。

/Oy 启用帧指针省略,/Oy- 禁用省略。 在 x64 编译器中,/Oy 和 /Oy- 不可用。

如果你的代码需要基于帧的寻址,你可以在 /Ox 选项之后指定 /Oy- 选项,或者使用带有“y”和 off 参数的 optimize,从而通过基于帧的寻址获得最大优化。 编译器可检测大部分需要基于帧的寻址的情况(例如,使用 _allocasetjmp 函数以及使用结构化异常处理的情况)。

/Ox(启用大多数速度优化)/O1、/O2(最大程度减小大小,提高速度)选项意味着使用 /Oy。 在 /Ox 、/O1 或 /O2 选项之后指定 /Oy- 会禁用 /Oy,无论 /Oy 是显式的还是隐含的。

/Oy 编译器选项使得调试器更加难以使用,这是因为编译器取消显示帧指针信息。 如果指定 debug 编译器选项(/Z7、/Zi、/ZI),则建议你在任何其他优化编译器选项后指定 /Oy- 选项。

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“优化”属性页面

  3. 修改“省略框架指针”属性。 此属性仅添加或移除 /Oy 选项。 如果要添加 /Oy- 选项,请选择“命令行”属性页并修改“其他选项”。

以编程方式设置此编译器选项

另请参阅

/O 选项(优化代码)
MSVC 编译器选项
MSVC 编译器命令行语法