__attribute__((transparent_union)) 変数属性

共用体である関数パラメータに transparent_union 変数属性をアタッチすると、対応する引数に任意の共用体メンバの型を使用できます。ただし、その引数は最初の共用体メンバと同じ型の引数として渡されます。

Note

C の仕様では、ある型として共用体が書き込まれ、別の型でその共用体が読み出されたときに返される値は定義されていません。このため、transparent_union がどの型として書き込まれるかを特定する方法も、引数として渡す必要があります。

Note

この変数属性は、ARM コンパイラでサポートされている GNU コンパイラの拡張機能です。

Note

また、この属性を共用体データ型の typedef で使用することもできます。その場合、この属性は同じ型を持つすべての関数パラメータに適用されます。

Show/hideモード

GNU モードでのみサポートされています。

Show/hide

typedef union
{
    int myint;
    float myfloat;
} transparent_union_t;
void Variable_Attributes_transparent_union_0(transparent_union_t aUnion __attribute__ ((transparent_union)))
{
    static int aStatic;
    aStatic +=aUnion.myint;
}
void Variable_Attributes_transparent_union_1()
{
    int aLocal =0;
    float bLocal =0;
    Variable_Attributes_transparent_union_0(aLocal);
    Variable_Attributes_transparent_union_0(bLocal);
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711