gccにおける関数または変数のweak属性について
1148 ワード
gccのreferenceを参照:
弱い記号:
2つ以上のグローバルシンボル(関数または変数名)の名前が同じで、そのうちの1つがweak symbolと宣言されている場合(弱い記号)を使用すると、グローバル記号の再定義エラーは発生しません.リンクは弱い記号を無視し、通常のグローバル記号を使用してこれらの記号への参照を解析しますが、通常のグローバル記号が使用できない場合、リンクは弱い記号を使用します.関数または変数名がユーザーによって上書きされる可能性がある場合、関数または変数名は弱い記号として宣言できます.弱い記号はweak alias(弱い別名)とも呼ばれる.
弱い記号を宣言する方法:
aliasを使用して、weakプロパティと組み合わせて、弱い記号を宣言します.たとえば、次のようにします.
ここcentonはcentonの別名.
C++でコンパイルターゲットを指定する「mangled name」が必要です.
弱い記号:
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」が必要です.