次のコードを検討してください。
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, ...);
ext_function
(サードパーティによって作成された)変更のみfield_3
を許可field_4
したいmy_struct
。だから私は次のことをします:
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, ...);
(後に示すように)呼び出す前との間my_struct
でポインタをキャストするのは安全ですか?inalterable_my_struct
ext_function
void call_ext_function(my_struct* ms){
inalterable_my_struct* ims = (inalterable_my_struct*)ms;
ext_function(ims, ...);
}