Skip to main content

IAR Embedded Workbench for Arm 9.70.x

__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;
}