Sto usando bitfield per ottenere un facile accesso su una libreria float che sto cercando di creare per un microcontrollore senza FPU.Qual è il modo corretto di utilizzare i bitfield in C?
Il problema è che non riesco a farlo funzionare con bitfield. Date un'occhiata:
typedef struct
{
union{
unsigned long mantissa: 23;
unsigned long exponent: 8;
unsigned long sign: 1;
float all;
};
}_float __attribute__((__packed__));
Il problema è che quando provo ad accedere o cambiare qualcosa che considera i campi di bit come 1,8,23 bit dalla fine, rispettivamente. Mentre dovrebbe essere 23 bit dalla fine, quindi 8 bit e poi l'ultimo bit. A meno che non abbia totalmente frainteso l'uso dei bitfield. Ho pensato che l'utilizzo di impacchettato avrebbe risolto il problema ma come puoi vedere non è stato così.
Qualsiasi aiuto sarebbe molto apprezzato. Sono stato condotto a questo sito mentre facevo ricerche su Google più di una volta quindi ho grandi speranze.
Il modo corretto di utilizzare i bitfield è di non utilizzare bitfield. –