10.61 __attribute__((transparent_union)) 型属性

transparent_union 型属性を使用すると、transparent_union 型、つまり、__attribute__((transparent_union))__ で修飾された共用体データ型を指定できます。

透過ユニオン型を持つパラメータを使用して関数が定義されると、共用体型の引数を使用した関数の呼び出しは、渡された引数の型を持つメンバおよび渡された引数値に設定された値を持つ共用体オブジェクトを初期化する結果になります。
共用体データ型が __attribute__((transparent_union)) で修飾されると、透過ユニオンはその型のすべての関数パラメータに適用されます。

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

モード

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

typedef union { int i; float f; } U __attribute__((transparent_union));
void foo(U u)
{
    static int s;
    s += u.i;    /* Use the 'int' field */
}
void caller(void)
{
    foo(1);        /* u.i is set to 1 */
    foo(1.0f);     /* u.f is set to 1.0f */
}
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.