[問題] 在struct中的union

看板C_and_CPP作者 (喵喵叫的蜜蜂貓)時間15年前 (2010/09/03 15:55), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
開發平台: MPLAB C30,編譯器是 gcc 舉例來說,下面這樣的結構 struct sS { char A; union { int B; char C,D; }; } S; 我可以用 "S.B" 來存取資料 ========================================================= 可是如果是這樣的結構 union uS { int B; char C,D; }; struct sS { char A; union uS U; } S; 就必須要用 "S.U.B" 來存取資料 ========================================================== 上面兩種寫法編譯器都可以過,因為我的這個 uS 結構會被很多 struct 使用 但又不想要多一個".U"的累贅敘述,請問應該怎麼宣告? 下面這樣宣告不會過 struct sS { char A; union uS; } S; 這似乎是一種叫做 Unnamed struct/union 的東西 可是我沒有找到怎麼宣的教學,或是答案是不可行? 目前只想到用#define的方式來防止重複敘述 -- 填充題: ______なのはいけないと思います! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.180.163 ※ 編輯: SmallBeeWayn 來自: 122.116.180.163 (09/03 16:01)

09/03 19:49, , 1F
#define MY_TYPE union { int B; char C,D; };
09/03 19:49, 1F

09/03 19:50, , 2F
typedef struct sS{ char A; MY_TYPE; } ST;
09/03 19:50, 2F

09/03 19:50, , 3F
可以直接用ST st; st.B = 100之類的 自己測吧
09/03 19:50, 3F
文章代碼(AID): #1CWAdmnV (C_and_CPP)