Everything

関数のインライン展開(#pragma inline/#pragma noinline)


インライン関数であることをコンパイラに示唆します。

[機能]

-

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

-

#pragma noinlineは,-Oinline_levelオプション使用時に特定関数のインライン展開を抑止する関数を宣言します。

-

同一翻訳単位内で,同じ関数に対して#pragma inlineと#pragma noinlineを同時に指定した場合はエラーとなります。

-

#pragma inline指令は,関数定義と同一翻訳単位内で,かつ関数定義より前に記述しなければなりません。

-

#pragma inline の機能は,キーワード__inlineと同一です。インライン展開の機能などについては「インライン関数指定(__inline)」を参照してください。

[方法]

-

対象関数より前で#pragma inline/#pragma noinline宣言を行います。

#pragma inline      [(]関数名 [,...][)]
#pragma noinline    [(]関数名 [,...][)]

[使用例]

extern int      gi;
 
#pragma inline  i_func
 
static int i_func(int i)
{
        return ++i;
}
 
void func(int j)
{
        gi = i_func(j);
}