Używam bitfields, aby uzyskać łatwy dostęp do biblioteki float, którą próbuję wykonać dla mikrokontrolera bez FPU.Jaki jest poprawny sposób korzystania z bitfields w C?
Problem polega na tym, że nie mogę sprawić, by działał z bitfieldami. Spójrz:
typedef struct
{
union{
unsigned long mantissa: 23;
unsigned long exponent: 8;
unsigned long sign: 1;
float all;
};
}_float __attribute__((__packed__));
Problem polega na tym, że przy próbie dostępu lub zmienić cokolwiek to uważa bitfields jak 1,8,23 bitów od końca odpowiednio. Chociaż powinno to być 23 bity od końca, a następnie 8 bitów, a następnie ostatni bit. Chyba że zupełnie źle zrozumiałem użycie bitfieldów. Pomyślałem, że użycie zapakowane rozwiąże problem, ale jak widać, nie.
Każda pomoc będzie naprawdę doceniana. Byłem prowadzony na tej stronie podczas googling więcej niż raz, więc mam duże nadzieje.
Poprawnym sposobem korzystania z bitfieldów jest niestosowanie bitfieldów. –