Как инициализировать int похороненный 2 уровня глубоко внутри союзов typdef'd - PullRequest
1 голос
/ 05 марта 2012

Я хотел бы выполнить следующее

static Type2 MyData;
MyData.Base.Data = (0b0000000000010100);

как статическая инициализация. Например

static Type2 MyData = (typecast)(0b0000000000010100);

С чем бы я это напечатал? Вот определения типа для Type1 и Type2

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;

1 Ответ

1 голос
/ 05 марта 2012

Аналогично этому вопросу , попробуйте Type2 t = { .Base.Data = 0x18 }; Если ваша цель - установить битовые поля в Type1, вам, вероятно, следует вызвать их напрямую; см здесь .

...