関数属性 (IBM 拡張)
関数の属性は、GNU C で開発されたプログラムの移植性を高めるためにイン プリメントされた拡張機能です。関数に属性を指定することは、コンパイラーが 関数呼び出しを最適化するのを支援し、コードをより多面的に検査するようにコンパイラーに指示 する明示的な方法です。追加機能を提供する属性もあります。
関数属性は、キーワード __attribute__、その後に続く属性名、さらに、その属性 名が必要とする追加引数によって指定されます。関数の __attribute__ 指定は、関数の宣言ま たは定義に含まれます。構文の形式は次のとおりです。
attribute_name は、前後に 2 つの下線文字を付けても付けなくても指定できます。 ただし、2 つの下線文字を使用すると、同じ名前のマクロと名前が競合する可能性が低くなります。 これらの言語機能は、拡張言語レベルの 1 つでコンパイルされるとき、一 括で使用可能になります。
以下の関数宣言はすべて有効です。
int __attribute__((attribute_name)) func(int i); //Form 1
__attribute__((attribute_name)) int func(int); //Form 2
int func() __attribute__((attribute_name)); //Form 3
属性指定は、関数に存在する場合がある例外宣言に従う必要があります。
次に例を示します。int func(int) throw(int) __attribute__((pure));

次の関数属性がサポートされています。
