我想通过为成员分配一个“匹配”结构来初始化结构的几个成员,而无需显式分配每个成员。
这是一个更好地解释它的示例。我有两个结构:
typedef struct
{
void* ThingB;
void* ThingC;
}SomeThings_S;
typedef struct
{
void* ThingA;
void* ThingB;
void* ThingC;
}AllThings_S;
我想通过将Somethings_S直接分配给AllThings_S中的ThingB和ThingC成员来初始化AllThings_S中的ThingB和ThingC成员。请参阅以下内容:
void* ThingA;
void* ThingB;
void* ThingC;
SomeThings_S SomeThings =
{
ThingB,
ThingC,
};
AllThings_S AllThings =
{
.ThingA = ThingA,
SomeThings, <--- This is where I'm not sure how to proceed.
}
我可以执行以下操作:
AllThings_S AllThings =
{
.ThingA = ThingA,
.ThingB = SomeThings.ThingB,
.ThingC = SomeThings.ThingC,
}
但这是我要避免的。我希望可以直接将Allthings中的东西分配给ThingB和ThingC。
对不起。我很难尝试解释。希望它是可读的。
答案 0 :(得分:0)
如果您真的想要这样做-我想强调一点,我真的不建议这样做-您可以使用-fplan9-extensions
或{{1} }选项,可让您直接访问匿名结构的成员。如果使用clang,请使用-fms-extensions
,因为我上次没有使用plan9扩展名。
它可能是什么样的:
-fms-extensions
答案 1 :(得分:0)
我使用匿名联合和结构通过EOF的评论解决了这个问题。