__weak
このセクションの内容:
構文
オブジェクト属性の構文を参照してください。
説明
__weakオブジェクト属性をシンボルの外部宣言に使用することにより、モジュール内でのそのシンボルへのすべての参照が弱参照になります。
publicのシンボルの定義上で__weakオブジェクト属性を使用すると、その定義はweakになります。
リンカは、シンボルへのweak参照を満たすためだけにライブラリからモジュールをインクルードすることはなく、weak参照の定義の不足がエラーにつながることもありません。定義がインクルードされない場合、オブジェクトのアドレスはゼロになります。
リンク処理の際、リンク処理の際、シンボルはweak定義を必要な数だけと、最大でweakでない定義を1 つ持つことができます。シンボルが必要で、weakでない定義が1 つあル場合は、その定義が使用されます。weakでない定義がない場合は、weak定義のいずれかが使用されます。
例
extern __weak int foo; /* A weak reference. */
__weak void bar(void) /* A weak definition. */
{
/* Increment foo if it was included. */
if (&foo != 0)
++foo;
}