私たちのコードには、混合型の大きな構造体があり、これらのデフォルト値の複製(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ポインタで機能するかということです。そうでない場合、これを行う方法はありますか?これを達成するためのより良い方法が欠けていますか?
明確にするために編集:構造体内の単一の値を「デフォルト」構造内の対応する値に設定します。