inline_depth
pragma
インライン ヒューリスティック検索の深さを指定します。 指定した値を超える呼び出しグラフ内の深さの関数はインライン化されません。
構文
#pragma inline_depth(
[ n ])
解説
この pragma は、inline
および __inline
とマークされた関数のインライン化、または /Ob
コンパイラ オプションで自動的にインライン化される関数のインライン化を制御します。 詳細については、「/Ob
(関数のインライン展開)」を参照してください。
n には 0 から 255 の値を指定できます。255 は呼び出しグラフの深さが無制限であることを意味します。 値 0 を指定すると、インライン展開が抑制されます。 n を指定しない場合は、既定値の 254 が使用されます。
inline_depth
pragma は一連の関数呼び出しを展開できる回数を制御します。 たとえば、インライン深度は 4 です。 A が B を呼び出し、B が C を呼び出した場合、3 つの呼び出しはすべてインラインで展開されます。 ただし、最も近いインライン深度展開が 2 の場合は、A と B のみ展開され、C は関数呼び出しとして残ります。
この pragma を使用するには、/Ob
コンパイラ オプションを 1 以上に設定する必要があります。 この pragma を使用して設定した深さは、pragma の後の最初の関数呼び出し時に有効になります。
インライン展開の深さは展開時に減らすことができますが、増やすことはできません。 インライン深度が 6 で、拡張中にプリプロセッサが値 8 を持つ inline_depth
pragma を検出した場合、深さは 6 のままです。
inline_depth
pragma は、__forceinline
でマークされた関数には影響しません。
Note
再帰関数は、最大深度である 16 回の呼び出しまでインラインで置き換えることができます。
関連項目
Pragma ディレクティブと __pragma
キーワードと _Pragma
キーワード
inline_recursion