'ステートメント' が含まれている関数はインライン展開されません(W8027) (C++)

提供: RAD Studio
移動先: 案内検索

コンパイラのエラーと警告(C++):インデックス への移動

(この警告を無効にするコマンドライン オプションは -w-inl です)

対象:

"ステートメント' とは以下のいずれかです。

  • スタティック変数
  • 集約初期化子
  • 一部の return 文
  • ローカル デストラクタ
  • 一部の if 文
  • ローカル クラス
  • 欠落した return 文
  • 以下の「予約語」セクションに一覧されている予約語

予約語

以下の予約語のいずれかが含まれている関数は、たとえ inline 指定されている場合でも、インライン展開できません。



asm
except
break
finally
case
for
continue
goto
defaults
switch
do
while



それでも関数自体は文法的には完全に正しいですが、通常のスタティック(非グローバル)関数として扱われます。

各コンパイル ユニットでは、関数の呼び出し位置にその関数のコピーが現れます。

説明

インライン関数が複雑になりすぎる場合、コンパイラはそれをインライン展開できません。もっとも、関数が非常に複雑なので、それをインライン展開してもパフォーマンスは大幅に向上しそうにありません。

ローカル デストラクタの場合

コンパイラでインライン展開が無効になっているインライン関数を作成した場合に出力される警告です。この警告は無視することができ、関数は非インラインで生成されます。