将结构分配给多个结构成员

时间:2020-05-22 18:58:58

标签: c structure

我想通过为成员分配一个“匹配”结构来初始化结构的几个成员,而无需显式分配每个成员。

这是一个更好地解释它的示例。我有两个结构:

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。

对不起。我很难尝试解释。希望它是可读的。

2 个答案:

答案 0 :(得分:0)

如果您真的想要这样做-我想强调一点,我真的不建议这样做-您可以使用-fplan9-extensions或{{1} }选项,可让您直接访问匿名结构的成员。如果使用clang,请使用-fms-extensions,因为我上次没有使用plan9扩展名。

它可能是什么样的:

-fms-extensions

答案 1 :(得分:0)

我使用匿名联合和结构通过EOF的评论解决了这个问题。

相关问题