/Ob(内联函数展开)
控制函数的内联扩展。 默认情况下,在进行优化时,扩展由编译器自行对所有函数进行(通常称为“自动内联”)。
语法
/Ob{0|1|2|3}
/Ob{0|1|2}
参数
0
/Od 下的默认值。 禁用内联扩展。
1
仅允许对标记为 inline、__inline 或 __forceinline 的函数或是在类声明中定义的 C++ 成员函数中进行扩展。
2
/O1 和 /O2 下的默认值。 允许编译器扩展任何未明确标记为无内联的函数。
3
此选项指定比 /Ob2 更积极的内联,但具有相同的限制。 /Ob3 选项自 Visual Studio 2019 起可用。
备注
编译器将内联扩展选项和关键字视为建议。 并不保证任何函数都会进行内联扩展。 可以禁用内联扩展,但即使在使用 __forceinline
关键字时,也无法强制编译器对特定函数进行内联。
要排除函数作为内联扩展的候选者,你可以使用 __declspec(noinline) 或由 #pragma auto_inline(off) 和 #pragma auto_inline(on) 指令标记的区域。 有关向编译器提供内联提示的另一种方法的信息,请参阅 #pragma intrinsic 指令。
注意
通过分析测试运行收集的信息会重写本应生效的优化,这是因为你指定了 /Ob、/Os 或 /Ot。 有关详细信息,请参阅按配置优化。
在 Visual Studio 开发环境中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“优化”属性页面。
修改“内联函数扩展”属性。
/Ob3 选项在“内联函数扩展”属性中不可用。 设置 /Ob3:
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“命令行”属性页。
在“其他选项”中,输入 /Ob3。