2012-03-05 39 views
1

我想執行以下如何初始化一個int埋2級內心深處typdef'd工會

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

爲什麼你需要在演員陣容中做到這一點?你不能在類型系統中做到嗎? – 2012-03-05 18:54:28

+0

我得到一個無效的初始化錯誤。編譯器不能自動從標量類型轉換爲非標量類型 – Jeremy 2012-03-05 19:06:35

+0

不,我的意思是說你完全不會投射。使用標準的結構/聯合初始化語法來初始化成員。 – 2012-03-05 19:11:57

回答

1

類似this question,嘗試Type2 t = { .Base.Data = 0x18 };如果你的目標是建立在Type1你應該直接調用出來的位域;請參閱here