/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 开发环境中设置此编译器选项

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

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

  3. 修改“内联函数扩展”属性。

/Ob3 选项在“内联函数扩展”属性中不可用。 设置 /Ob3:

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

  2. 选择“配置属性”>“C/C++”>“命令行”属性页

  3. 在“其他选项”中,输入 /Ob3。

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

另请参阅

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