C 如何初始化埋在typdef'深2层的int;d工会

C 如何初始化埋在typdef'深2层的int;d工会,c,struct,typedef,bit-fields,unions,C,Struct,Typedef,Bit Fields,Unions,我想执行以下操作 static Type2 MyData; MyData.Base.Data = (0b0000000000010100); 作为静态初始化。比如说 static Type2 MyData = (typecast)(0b0000000000010100); 我用什么打字? 这里是Type1和Type2的TypeDef typedef union { UINT16 Data; struct { unsigned :10;

我想执行以下操作

static Type2 MyData;
MyData.Base.Data = (0b0000000000010100);
作为静态初始化。比如说

static Type2 MyData = (typecast)(0b0000000000010100);
我用什么打字? 这里是Type1和Type2的TypeDef

typedef union
{
    UINT16 Data;
    struct
    {
        unsigned      :10;  
        unsigned var1 :3;   
        unsigned var2 :2;   
        unsigned var3 :1;   
    };
} Type1;    

typedef union
{
    Type1 Base;     
    struct
    {
        unsigned var4 :3;
        unsigned var5 :2;   
        unsigned      :11;
    } Data;
} Type2;

类似于,请尝试
type2t={.Base.Data=0x18}
如果您的目标是在
Type1
中设置位字段,您可能应该直接调用它们;看

类似于,尝试
type2t={.Base.Data=0x18}
如果您的目标是在
Type1
中设置位字段,您可能应该直接调用它们;看

你为什么要用石膏做这个?您不能在类型系统中执行此操作吗?我收到一个无效的初始化错误。编译器不能自动从标量类型转换为非标量类型否,我的意思是根本不转换。使用标准的结构/联合初始化语法来初始化memberwise。为什么需要使用强制转换来执行此操作?您不能在类型系统中执行此操作吗?我收到一个无效的初始化错误。编译器不能自动从标量类型转换为非标量类型否,我的意思是根本不转换。使用标准结构/联合初始化语法初始化memberwise。