Skip to main content

IAR Embedded Workbench for Arm 9.70.x

サポートされるGCC属性

このセクションの内容:

拡張言語モードでは、IAR C/C++コンパイラは、限られたGCCスタイル属性もサポートします。 __attribute__ ((attribute-list)) 構文をこれらの属性に使用します。

次の属性は、一部またはすべてがサポートされます。詳細については、GCCのドキュメントを参照してください。

  • alias

  • aligned

    この属性は以下でサポートされています。

    • typedef 宣言

    • enum タイプ

    • struct および unionタイプおよびメンバ

    • レジスタ変数を除く変数。

    GCC 実装とは異なり、属性は関数でも(ポインタ)関数パラメータでもサポートされません。また、自動変数がスタックよりも厳密なアライメントを持つことができないなど、追加の制限が適用される場合があります。

  • always_inline

    GCCの実装とは対照的に、この属性は関数のinlineを暗黙的に示し、非インライン関数でalways_inlineが使用される場合には診断メッセージは生成されません。

  • cleanup

  • cmse_nonsecure_call

    __cmse_nonsecure_callも参照してください。

  • cmse_nonsecure_entry

    __cmse_nonsecure_entryも参照してください。

  • cold

    この属性は、関数の最適化目標をサイズの最適化に設定します。#pragma optimize を使用して最適化目標も設定されている場合、 GCC スタイル属性はこれを上書きします。競合が発生すると、警告が表示されます。

    GCC の実装とは異なり、属性はラベルではなく関数属性としてのみ使用できます。

  • const

  • constructor

    属性がconstructorの関数は、動的初期化の最後(静的初期化の後)、mainが呼び出される前に呼び出されます。属性が複数の関数で使用される場合、定義された順番で呼び出されます。

    この属性は、オプション‑‑sharedを使用してコンパイルされたオブジェクトで使用された場合、認識されますが、効果はありません。

  • deprecated

  • fallthrough

    The attribute is recognized but has no effect, because the compiler does not diagnose fallthrough between case labels. However, when used, correct usage of the attribute will be enforced.

  • format

  • hot

    この属性は、関数の最適化目標を速度の最適化に設定します。#pragma optimize を使用して最適化目標も設定されている場合、 GCC スタイル属性はこれを上書きします。競合が発生すると、警告が表示されます。

    GCC の実装とは異なり、属性はラベルではなく関数属性としてのみ使用できます。

  • naked

  • noinit

    GCC 実装とは異なり、属性は変数にのみ適用され、そのような変数は IAR __no_init キーワードで宣言されたかのように扱われます。

  • noinline

  • nonnull

    属性は認識されますが、効果はありません。

  • noreturn

  • packed

    enum定義で使用する場合、packed属性はオプション‑‑enum_is_intが指定されている場合にのみ機能します。その場合、enumには可能な限り一番小さい基礎型が選択されます。(それ以外の場合は、これがコンパイラのデフォルトの動作です)。

    GCCスタイルの属性packedを使用する場合、潜在的なアライメントされていないstructメンバー アクセスに対して診断メッセージは生成されないので、注意してください。このようなアクセスを通知するには、IARタイプの属性__packedを使用します。

  • pcs (関数に使用されるIAR 型属性用)

  • pure

  • section

  • target (関数に使用されるIAR 型属性用)

  • unused

  • used

  • visibility

    リファレンス情報については、visibilityを参照してください。

  • volatile

  • warn_unused_result

  • weak

    IAR属性__weakが宣言、または以降の定義での仮の定義で使用される場合、オブジェクトは弱くならないことに注意してください。GCCスタイル属性weakを使用すると、オブジェクトはweakになります。

visibility

構文

__attribute__((visibility ("type"))

パラメータ

type

これらの値のうちの1つ:

  • default

  • hidden

  • internal

  • protected

説明

この属性はCモードでサポートされています。これを使用するコードは、オプション--sharedでコンパイルする必要があります。それ以外では、属性は認識されますが、効果はありません。関数や変数とともに使用できます。

次の制限が適用されます。

  • visibility属性は、型には使用できません。使用しようとすると、診断メッセージが出力されます。

  • 対応する定義または仮の定義のないオブジェクトのextern宣言で使用しても、この属性の効果はありません。

  • visibilityタイプinternalは、リンカによってhiddenとして扱われます。

void
__attribute__((visibility ("hidden")))
myFunction() { }
関連項目

‑‑so_export および ‑‑visibility