10.32 __attribute__((always_inline)) 関数属性

この関数属性は、関数をインライン展開する必要があることを示します。

コンパイラは、関数の特性に関係なく、その関数をインライン関数にしようとします。
状況によっては、コンパイラは __attribute__((always_inline)) 属性を無視して関数をインライン化しないことがあります。例えば、
  • 再帰関数がインライン展開することはありません。
  • alloca() を利用する関数がインライン展開されることはありません。

この関数属性は、ARM コンパイラがサポートする GNU コンパイラ拡張機能です。同等のキーワード __forceinline があります。

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