Я пишу код в C, который инициализирует кучу структур, используя части других структур. Например:Инициализация массива в структуре с помощью другого массива
//Original structure
struct
{
int foo1;
int foo2;
int foo3;
} orig_struct = {1,2,3};
//New structure
struct
{
int bar1;
int bar2;
} new_struct = {orig_struct.foo1, orig_struct.foo2};
Я должен сделать это для много структур, а метод инициализации выше делает код выглядит очень чистым и читаемым. Чтобы быть ясным, я не могу контролировать исходные структуры. Я просто создаю новые структуры для сбора данных из них.
я столкнулся с проблемой, когда одна из структур был большой массив:
//Original structure
struct
{
int foo1;
int foo2[50];
int foo3;
} orig_struct = {1,{2,3,etc},52}; //<--replace "etc" with 48 more int values
//New structure
struct
{
int bar1;
int bar2[50];
} new_struct = {orig_struct.foo1, XXX};
есть все, что я могу заменить XXX с инициализировать массив в новой структуре со значениями в массиве из оригинальная структура? Опять же, я хотел бы сохранить чистый, последовательный взгляд на мой код, поэтому сохранить его в фигурных скобках было бы идеально. Я знаю, что можно ввести вручную из каждого элемента массива в пределах своих фигурных скобках:
...
} new_struct = {orig_struct.foo1, {orig_struct.foo2[0],orig_struct.foo2[1],orig_struct.foo2[2],orig_struct.foo2[3],etc}
Но это довольно очевидно, почему это может быстро стать несостоятельным.
Да, сейчас я использую метод memcpy. По общему признанию, это не страшно. Если вы правы, что нет другого пути, мне придется сделать этот мой постоянный код. –