Я несколько определений структур ниже:Инициализация структуры, содержащей указатель на другую структуру в C99
typedef struct {
uint16_t a ;
} my_type1_t ;
typedef struct {
uint16_t b ;
} my_type2_t ;
typedef struct {
my_type1_t* a_ptr ;
my_type2_t* b_ptr ;
} both_t ;
typedef struct {
both_t* both_ptr ;
} gathered_t
и некоторые экземпляры вышеуказанных структур:
my_type1_t a = {
.a = 0x01U,
} ;
my_type2_t b = {
.b = 0xAAU,
} ;
Я хотел бы задать возможно ли это в стандарте C99 или выше для некоторой инициализации структуры, как показано ниже:
gathered_t all = {
.both_ptr.a_ptr = &a,
.both_ptr.b_ptr = &b,
};
I kno w, что решение этой проблемы может определять экземпляр структуры both_t, однако это вводит дополнительный объект, который потребляет память.
Я проверил ваше решение и, похоже, работает, но можете ли вы рассказать мне, где этот объект был выделен? в стеке? – Lazureus
Я проверил свой файл карты еще раз, и я увидел, что этот объект в основном распределяется в ОЗУ, но не имеет никакого символа. – Lazureus
@ Lazureus, см. Мое редактирование. –