A.2.2 関数のインライン展開を行う

#pragma inlineは、インライン展開する関数を宣言します。

インライン展開の有無はコンパイラオプションのinline/noinlineでも制御しますが、noinlineオプションが指定された場合でも、#pragma inline指定された関数はインライン展開の対象となります。

関数名には、グローバル関数および静的関数メンバを指定できます。#pragma inlineで指定した関数名の関数と関数指定子inline(C++言語およびC(C99)言語)を指定した関数は、その関数を呼び出したところにインライン展開されます。

【記述例】

Cソースコード

#pragma inline(func)
static int func (int a, int b)
{
           return (a+b)/2;
}
int x;
main()
{
           x=func(10,20);
}

展開イメージ

int x;
main()
{
          int func_result;
          {
                       int a_1=10, b_1=20;
                       func_result=(a_1+b_1)/2;
          }
            x=func_result;
}