Ich verwende Bitfelder, um einen einfachen Zugriff auf eine Float-Bibliothek zu erhalten, die ich für einen Mikrocontroller ohne FPU erstellen möchte.Wie ist die korrekte Verwendung von Bitfeldern in C?
Das Problem ist, dass ich nicht scheinen kann, dass es mit Bitfeldern funktioniert. Werfen Sie einen Blick:
typedef struct
{
union{
unsigned long mantissa: 23;
unsigned long exponent: 8;
unsigned long sign: 1;
float all;
};
}_float __attribute__((__packed__));
Das Problem ist, dass wenn ich versuche, etwas für den Zugriff auf oder ändern sie jeweils die Bitfelder als 1,8,23 Bits vom Ende hält. Während es 23 Bits vom Ende sein sollte, dann 8 Bits und dann das letzte Bit. Es sei denn, ich habe die Verwendung von Bitfeldern völlig missverstanden. Ich dachte, dass mit verpackt würde das Problem lösen, aber wie Sie sehen können, tat es nicht.
Jede Hilfe würde wirklich geschätzt werden. Seit ich mehr als einmal gegoogelt habe, bin ich auf diese Seite gelaufen, also habe ich große Hoffnungen.
Die korrekte Verwendung von Bitfeldern besteht darin, keine Bitfelder zu verwenden. –