char pseudostruct[16]; /* int, char[4], double */ int get_a(char* p){ return *((int*)p); } void set_a(char* p, int v){ *((int*)p) = v; } char* get_b(char* p){ return p + 4; } void set_b(char* p, char* v){ strncpy(p, v, 4); } double get_c(char* p){ return *((double*)(p + 8)); } void set_c(char* p, double v){ *((double*)(p + 8)) = v; }
no subject
Date: 2019-07-11 07:02 pm (UTC)char pseudostruct[16]; /* int, char[4], double */ int get_a(char* p){ return *((int*)p); } void set_a(char* p, int v){ *((int*)p) = v; } char* get_b(char* p){ return p + 4; } void set_b(char* p, char* v){ strncpy(p, v, 4); } double get_c(char* p){ return *((double*)(p + 8)); } void set_c(char* p, double v){ *((double*)(p + 8)) = v; }Обвешать inline по вкусу. Но это уже подозрительно напоминает попытку ASM-вставки без ASM-вставки и той самой ручной оптимизации, которая очень эффективно замедляет код.