在我们的代码中,我们有一个混合类型的大型结构,并希望为这些存储默认值的重复 (const) 结构。
当用户想要默认设置时,最好能够通过获取结构中项目的地址偏移量来做到这一点,然后在“默认”结构中分配具有相同偏移量的值,有点像这样:
void *setting = &settings->thing; // Points to a setting
int offset = setting - &settings;
void *default = &defaults_struct + offset; // Points to the default value
*setting = *default; // Set setting to default value
想法是,如果 settings->thing 指向 int8,则从默认值复制 int8 值,但如果 settings->other_thing 是 int32,则复制完整的 32 位。
问题是,这是否适用于如上所述的 void 指针?如果没有,有没有办法做到这一点?我错过了实现这一目标的更好方法吗?
编辑澄清:我们希望将结构中的单个值设置为“默认”结构中的相应值。