/Ob (Inline Function Expansion)

Controls inline expansion of functions.




Disables inline expansions. By default, expansion occurs at the compiler's discretion on all functions, often referred to as auto-inlining.

Allows expansion only of functions marked inline, __inline, or __forceinline, or in a C++ member function defined in a class declaration.

The default value. Allows expansion of functions marked as inline, __inline, or __forceinline, and any other function that the compiler chooses.

/Ob2 is in effect when /O1, /O2 (Minimize Size, Maximize Speed) or /Ox (Enable Most Speed Optimizations) is used.

This option requires that you enable optimizations using /O1, /O2, /Ox, or /Og.


The compiler treats the inline expansion options and keywords as suggestions. There is no guarantee that any function will be expanded inline. You can disable inline expansions, but you cannot force the compiler to inline a particular function, even when using the __forceinline keyword.

You can use the #pragma auto_inline directive to exclude functions from consideration as candidates for inline expansion. Also see the #pragma intrinsic directive.


Information that is gathered from profiling test runs overrides optimizations that would otherwise be in effect if you specify /Ob, /Os, or /Ot. For more information, see Profile-Guided Optimizations.

To set this compiler option in the Visual Studio development environment

  1. Open the project's Property Pages dialog box. For details, see Set C++ compiler and build properties in Visual Studio.

  2. Expand Configuration Properties, C/C++, and select Optimization.

  3. Modify the Inline Function Expansion property.

To set this compiler option programmatically

See also

/O Options (Optimize Code)
MSVC Compiler Options
MSVC Compiler Command-Line Syntax