gccにおける関数または変数のweak属性について

1148 ワード

gccのreferenceを参照:
弱い記号:
2つ以上のグローバルシンボル(関数または変数名)の名前が同じで、そのうちの1つがweak symbolと宣言されている場合(弱い記号)を使用すると、グローバル記号の再定義エラーは発生しません.リンクは弱い記号を無視し、通常のグローバル記号を使用してこれらの記号への参照を解析しますが、通常のグローバル記号が使用できない場合、リンクは弱い記号を使用します.関数または変数名がユーザーによって上書きされる可能性がある場合、関数または変数名は弱い記号として宣言できます.弱い記号はweak alias(弱い別名)とも呼ばれる.
弱い記号を宣言する方法:
aliasを使用して、weakプロパティと組み合わせて、弱い記号を宣言します.たとえば、次のようにします.
   1: int __centon()
   2: {
   3:     return 100;
   4: }
   5:  
   6: void centon() __attribute__ ((weak,alias("__centon")));

ここcentonはcentonの別名.
C++でコンパイルターゲットを指定する「mangled name」が必要です.