10.6 __forceinline

__forceinline キーワードは、C 関数または C++ 関数をインラインでコンパイルするようコンパイラに指示します。

__forceinline のセマンティクスは、以下のように C++ での inline キーワードのセマンティクスとまったく同じです。コンパイラは、関数の特性に関係なく、その関数をインライン関数化しようとします。
状況によっては、コンパイラは __forceinline キーワードを無視して関数をインライン化しないことがあります。例えば、
  • 再帰関数がインライン展開することはありません。
  • alloca() を利用する関数がインライン展開されることはありません。
__forceinline は記憶域クラス修飾子です。これは、関数の型には影響しません。

このキーワードには、同等の関数属性 __attribute__((always_inline)) があります。

__forceinline static int max(int x, int y)
{
    return x > y ? x : y; // always inline if possible
}
関連する参考文書
8.84 --forceinline
10.32 __attribute__((always_inline)) 関数属性
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.