union 共用体名{ 成员列表 };类似结构体,是一群变量的集合,和集合不同的是:
共用体分配空间时,是依据内部变量中最大变量的大小分配的。 如下,double最大,需要8byte,所以分配8字节空间 union data{ int n; char ch; double f; }; 实际上,共用体只分配空间,不管空间内的任何操作 如下:根据共用体内部变量分配好空间大小,甚至可以写入未定义的变量类型 union var1{ int a; double b; }; int main() { union var1 uu; uu.a=1; char* p1; p1 = &uu; p1[0] = 'a'; p1[1] = 'b'; p1[2] = '\0'; printf("%s", &uu); return 0; }attribute可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)
这里其实也可以是 attribute ((transparent_union)),说是为了防止重名
透明联合相关介绍:https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Type-Attributes.html#Type-Attributes