目前,我有一个结构,其中包含相同类型的布尔列表,例如:
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有点新意,我对工会的处理不多。我想知道这是否足以解决这种情况。
谢谢
使用两个相似结构的联合并不是不合理的。 (如果没有更多信息,就不能说你的特殊情况会很好。)
正确的语法是:
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
。