c - How to initialize void* data struct member with another struct member in C99? -


let's assume have below struct definitions:

typedef struct {   uint8_t ;  } deepest_t ;    typedef struct {   deepest_t* deepest_ptr ; } deeper_t ;   typedef struct {   deeper_t*  deeper_ptr ; } deep_t ;   typedef struct {   void* data ; } data_container_t ;  

and following initializations:

deepest_t deepest = {   .a = 5,  } ;   deeper_t deeper = {    .deepest_ptr = &deepest,  } ;  deep_t deep = {    .deeper_ptr = &deeper, } ; 

and question, please tell me how initialize void* data usage of designated initializer in order void* data point deepest_t deepest. i've tried such solution, compiler screaming not const value :

data_container_t data_container = {   .data = &(((deeper_t*) deep.deeper_ptr)->deepest_ptr), } ;  

in here believe keeping address of deepest_ptr ..

data_container_t data_container = {   .data = &(((deeper_t*) deep.deeper_ptr)->deepest_ptr), } ; 

so retrieve it, can ..

deepest_t * d = *((deepest_t**)(data_container.data));  printf(" %ud \n", (*d).a); 

since can't use void* until cast ..

here's live execution


Popular posts from this blog

How to calculate SNR of signals in MATLAB? -

c# - Attempting to upload to FTP: System.Net.WebException: System error -

ios - UISlider customization: how to properly add shadow to custom knob image -