Каков наилучший / самый чистый способ инициализации (в локальной функции) длинной цепочки вложенных структур, когда каждая структура содержит только указатели на другие структуры, например, так:
typedef struct A{
struct B{
struct C *c /* OPTIONAL */;
struct D *d /* OPTIONAL */;
struct E *e /* OPTIONAL */;
struct F *f /* OPTIONAL */;
} *b;
struct G{
struct F *f /* OPTIONAL */;
struct D *d /* OPTIONAL */;
struct H *h /* OPTIONAL */;
struct F *f /* OPTIONAL */;
} *g;
} a;
Каждый из указателейсами вложенные структуры указывают на структуры, содержащие указатели на другие вложенные структуры (я знаю, это безумие!)
Я считаю, что мне нужно определить указатель tmp для каждого члена структуры и выделить для него память, а такжеПеременная структуры tmp и укажите первое на последнее:
B *b_ptr = CALLOC(1,sizeof(b_ptr));
B b_tmp;
b_ptr = &b_tmp;
b_tmp.itsMember1 = CALLOC(1,sizeof(itsMember1));
TypeOfItsMember1 itsMember1_tmp;
..
..
Для этого потребуется множество локальных переменных и болезненно повторяющееся кодирование.Есть ли лучший способ полностью инициализировать родительскую структуру?
Любые специалисты в доме заботятся о том, чтобы дать свои 2 цента?