/Ob (関数のインライン展開)
関数のインライン展開を制御します。
/Ob{0|1|2}
引数
0
インライン展開を無効にします。 既定では、展開はすべての関数でコンパイラの裁量で行われ、一般に「自動インライン展開」と呼ばれます。1
inline、__inline、または __forceinline としてマークされた関数の展開のみ、またはクラス宣言で定義された C++ メンバー関数にある展開のみが許可されます。2
既定値。 inline、__inline、または __forceinline としてマークされた関数の展開、およびコンパイラが選択するその他すべての関数が許可されます。/Ob2 は、/O1、/O2 (プログラム サイズ、実行速度)、または /Ox (最大限の最適化) を使用する場合のみ有効になります。
このオプションでは、/O1、/O2、/Ox、または /Og を使用して最適化を有効にする必要があります。
解説
インライン展開に関するオプションとキーワードは、インライン展開の対象となる候補をコンパイラに示すだけです。 すべての関数がインライン展開になるという保証はありません。 インライン展開は無効にすることができますが、__forceinline キーワードを使用しても、特定の関数のインライン展開をコンパイラに強制することはできません。
#pragma auto_inline ディレクティブを使用して、関数をインライン展開の候補対象から除外することができます。 #pragma intrinsic ディレクティブも参照してください。
注意
プロファイリングのテスト実行から収集される情報により、/Ob、/Os、または /Ot を指定する場合に有効な最適化がオーバーライドされます。詳細については、「ガイド付き最適化のプロファイル」を参照してください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「プロジェクトのプロパティの操作」を参照してください。
[構成プロパティ]、[C/C++] の順に展開して、[最適化] をクリックします。
関数のインライン展開 プロパティを変更します。
このコンパイラ オプションをコードから設定するには
- 「InlineFunctionExpansion」を参照してください。