gnu_inline 属性は、関数のインライン化動作を変更するようコンパイラーに指示します。この関数属性が使用されると、コンパイラーは C に対する GNU レガシー・インライン化拡張機能を模倣します。
gnu_inline 関数属性の構文 >>-inline--__attribute__--((----gnu_inline----))---------------><
extern inline __attribute__((gnu_inline)) func() {…};
この func の定義は、インライン化にのみ使用されます。これは、スタンドアロン関数としてコンパイルされません。static inline __attribute__((gnu_inline)) func() {…};
この関数が生成される場合、関数は内部リンケージとともに生成されます。inline __attribute__((gnu_inline)) func() {…};
この定義は、可能な場合、インライン化に使用されます。これは、スタンドアロン関数としてコンパイルされ (強い定義として出力され)、外部リンケージとともに出力されます。inline int func() __attribute__((gnu_inline));
他の GCC 関数属性と同じように、属性名に付いている 2 つの連続する下線はオプションです。gnu_inline 属性は、同様に inline キーワードで宣言された関数と一緒に使用する必要があります。