[问题] union & 二维阵列

楼主: news9801 (相框中的世界)   2019-12-26 15:09:15

最近再看union的功能,有看过一些介绍与使用范例,
不过看了一些范例的使用方式,都没有目前想要实现的功能。
以下面例子为例
volatile union{
unsigned char Table_ALL[2];
union {
unsigned char Byte ;
struct {
unsigned char C1_1:1;
unsigned char C1_2:1;
unsigned char C1_3:1;
unsigned char C1_4:1;
unsigned char C1_5:1;
unsigned char C1_6:1;
unsigned char C1_7:1;
unsigned char C1_8:1;
}BIT;
} S1_C1;
union {
unsigned char Byte ;
struct {
unsigned char C2_1:1;
unsigned char C2_2:1;
unsigned char C2_3:1;
unsigned char C2_4:1;
unsigned char C2_5:1;
unsigned char C2_6:1;
unsigned char C2_7:1;
unsigned char C2_8:1;
}BIT;
} S1_C2;
}Table;
Table.S1_C1.Byte看到的资料等同Table.Table_ALL[0]
Table.S1_C2.Byte看到的资料等同Table.Table_ALL[1]
后来我想说是不是可以在里面宣告一个二维阵列 Table_ALL[2][2] 来使用呢?
因此我在里面把 Table_ALL[2] 改为 Table_ALL[2][2]
经过Debug模式看到原本的 S1_C1 是放在 Table_ALL[0][0],
S1_C2 是放在 Table_ALL[0][1] 里面了没错
但是我该如何把在里面增加一个S2_C1放在Table_ALL[1][0]里面呢?
目前好像都没有找到这样的使用方式,不晓得有没有人用过。
最后感谢各位花时间看这个问题 :))
作者: Lipraxde (Lipraxde)   2019-12-26 19:03:00
我觉得你的 union 跟我认识的不太一样...S1_C1、S1_C2 应该在同个位置吧?你的 debugger 真的这样显示?还是贴上来的 code 不一样?https://ideone.com/5mUcus
作者: johnpage (johnpage)   2019-12-27 02:38:00
宣告union结构,再用它当资料类型宣告阵列
作者: Lipraxde (Lipraxde)   2019-12-27 12:28:00
这样跟宣告 union Sx_Cx var[a][b]; 好像没多少区别啊...

Links booklink

Contact Us: admin [ a t ] ucptt.com