GNU C __attribute__

__attribute__関数属性を提供することができる(関数属性)、変数の属性(変数属性)とタイプの属性(タイプ属性)

__attribute__ 2つのアンダースコアの前と後、直ちにブラケットは、対応するパラメータであるオリジナルブラケットの一対続いて__attribute__

1.変数エイリアス:

構文:タイプのnewname__attribute __((エイリアス( " oldname「)));

する#include <stdio.hの>
 INT OLDNAME = 1 extern  int型 newnameの__attribute __((別名(" OLDNAME "))); // 宣言
ボイドのfoo(ボイド
{ 
    のprintf(" NEWNAME =%d個の\ n "、NEWNAME)。// プリント1 
}

2.弱いシンボル:

いずれかが弱い性質として宣言されている二つ以上のグローバルシンボル(関数または変数名)名、場合と同様に、グローバル・シンボル再定義エラーをもたらさないであろう。リンカは、弱いシンボルを無視し、これらのシンボルへのすべての参照を解決するために、共通のグローバルシンボルを使用することではなく、通常のグローバルシンボルが使用できない場合、リンカは弱いシンボルを使用します。機能やユーザー変数名が覆われていてもよい場合は、関数や変数の名前は弱いシンボルとして宣言することができます。

// モジュールコールFUNCが、外部関数かどうかわからない
...
 のextern  int型 FUNC(無効); 
 
... 
 
int型 A = FUNC(); 
 
... 

もし、このような直接呼び出し、外部には提供しない場合機能的なプログラムクラッシュする可能性。

したがって、このモジュール__attribute __()(弱)に便利になる

INT   ((弱))FUNC(......)__ __attribute 
 
{ 
 
    戻り 0 ; 
 
}

 

おすすめ

転載: www.cnblogs.com/guxuanqing/p/11184758.html