C'è un modo pulito di lanciare una struct in un uint64_t o qualsiasi altro int, data quella struct in < = alla sizeof int? L'unica cosa che posso pensare è solo una soluzione "ok" - usare i sindacati. Comunque non mi sono mai piaciuti.Casting struct into int
Lasciatemi aggiungere un frammento di codice per chiarire:
typedef struct {
uint8_t field: 5;
uint8_t field2: 4;
/* and so on... */
}some_struct_t;
some_struct_t some_struct;
//init struct here
uint32_t register;
Ora come faccio io scaccio some_struct per catturare i suoi bit di ordine nel registro uint32_t.
Spero che lo renda un po 'più chiaro.
C'è sempre memcpy! –
@MartinBeckett Questa sarebbe una buona risposta :) – dasblinkenlight
Non "affezionato" ai sindacati? Un sindacato fa esattamente ciò che vuoi fare in modo chiaro e manutenibile. Cosa c'è "OK" a riguardo? –