4.4.3. __attribute__((transparent_union))

可以使用 transparent_union 类型属性指定 transparent_union 类型,即使用 __attribute__((transparent_union))__ 限定的联合数据类型。

使用具有透明联合类型的参数定义函数时,如果函数调用使用的自变量具有联合中的任何类型,则会导致初始化具有以下成员的联合对象:成员具有传递的自变量类型,并将其值设置为传递的自变量值。

使用 __attribute__((transparent_union)) 限定联合数据类型时,透明联合将应用于所有具有该类型的函数参数。

Note

此类型属性是 ARM 编译器支持的 GNU 编译器扩展。

Note

也可以使用相应 __attribute__((transparent_union)) 变量属性限定各个函数参数。

示例


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 */

}

模式

仅在 GNU 模式下支持。

另请参阅

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential