alias 関数属性を指定
すると、関数宣言が別のシンボルの別名として、オブジェクト・ファイルに現れます。
この言語フィーチャーを使用して、重複する名前、または
複雑な名前に対処することができます。
alias 関数属性は関数属性の一般的な構文に従います。以下のダイアグラムで、 サポートされる形式が示されます。
>>-__attribute__------------------------------------------------> >--((--+-alias-----+--(--"original_function_name"--)--))------->< '-__alias__-'
この関数属性を持つ別名の指定の後に、別名を付けた関数を定義することができます。
また、同じコンパイル単位に別名の割り当てられた関数の定義がない場合、C は別名の指定を許可します。
original_function_name はマングルされた
名前でなければなりません。
次の宣言は、bar を __foo の別名と宣言しています。
void __foo(){ /* function body */ } void bar() __attribute__((alias("__foo")));
extern "C" __foo(){ /* function body */ } void bar() __attribute__((alias("__foo")));
このコンパイラーは bar の宣言と __foo の定義の間の整合性を検査しません。そのような整合性を保持するのはプログラマーの責任です。
関連参照