以下にいくつかの構造定義を示します。
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,
};
この問題の解決策は both_t 構造体のインスタンスを定義することですが、これによりメモリを消費する追加のオブジェクトが導入されます。