Si prega di considerare il seguente codice.Lanciare tra il puntatore struct in C
typedef struct{
int field_1;
int field_2;
int field_3;
int field_4;
uint8_t* data;
uint32_t data_size;
} my_struct;
void ext_function(inalterable_my_struct* ims, ...);
voglio permettere ext_function
(scritto da parte di terzi) per modificare solo field_3
e field_4
in my_struct
. Così faccio la seguente:
typedef struct{
const int field_1;
const int field_2;
int field_3;
int field_4;
const uint8_t* data;
const uint32_t data_size;
} inalterable_my_struct;
void ext_function(inalterable_my_struct* ims, ...);
E 'sicuro per lanciare puntatori tra my_struct
e inalterable_my_struct
prima di chiamare ext_function
(come mostrato dopo)?
void call_ext_function(my_struct* ms){
inalterable_my_struct* ims = (inalterable_my_struct*)ms;
ext_function(ims, ...);
}
Se non si desidera 'ext_function' modificare' data', si dovrebbe dichiareremo come 'uint8_t const * dati const;' – Henrik