目前,我有一个结构,其中包含一个相同类型的布尔值列表,例如:
typedef unsigned char U8
typedef struct
{
U8 A1
U8 A2
U8 A3
U8 B1
U8 B2
U8 B3
} NewStruct;
我正在尝试使用联合将这些成员分为A组和B组(因为这些组实际上包含100多个变量),因此人们可以调用A组或B组并在此过程中节省一些内存:>
typedef unsigned char U8
typedef union
{
typedef struct
{
U8 A1
U8 A2
U8 A3
} NewStruct_1;
typedef struct
{
U8 B1
U8 B2
U8 B3
} NewStruct_2;
} NewUnion;
我对C有点陌生,我对工会并没有太多处理。我想知道这是否是解决这种情况的充分/有用的方法。
谢谢
答案 0 :(得分:1)
使用两个相似结构的并集并非没有道理。 (如果没有更多信息,您不能说这对您的特定情况很好。)
正确的语法是:
typedef unsigned char U8;
typedef union
{
struct
{
U8 A1;
U8 A2;
U8 A3;
} NewStruct_1;
struct
{
U8 B1;
U8 B2;
U8 B3;
} NewStruct_2;
} NewUnion;
另外,从内部结构成员中删除名称会使它们成为匿名名称,然后A1
,A2
,A3
,B1
,B2
,和B3
成员看起来就像是外部工会的成员一样:
typedef unsigned char U8;
typedef union
{
struct
{
U8 A1;
U8 A2;
U8 A3;
};
struct
{
U8 B1;
U8 B2;
U8 B3;
};
} NewUnion;
然后,如果x
是NewUnion
,则可以使用x.A1
而不是x.NewStruct_1.A1
。