J'utilise des champs de bits pour accéder facilement à une librairie flottante que j'essaie de créer pour un microcontrôleur sans FPU.Quelle est la bonne façon d'utiliser les champs de bits en C?
Le problème est que je ne peux pas sembler le faire fonctionner avec bitfields. Jetez un oeil:
typedef struct
{
union{
unsigned long mantissa: 23;
unsigned long exponent: 8;
unsigned long sign: 1;
float all;
};
}_float __attribute__((__packed__));
Le problème est que lorsque je tente d'accéder ou de changer quoi que ce soit il considère les bitfields comme 1,8,23 bits à partir de la fin respectivement. Alors qu'il devrait être 23 bits de la fin, puis 8 bits, puis le dernier bit. Sauf si j'ai totalement mal compris l'utilisation de bitfields. Je pensais que l'utilisation emballé résoudrait le problème, mais comme vous pouvez le voir n'a pas.
Toute aide serait vraiment appréciée. J'ai été conduit à ce site tout en googlant plus d'une fois donc j'ai de grands espoirs.
La façon correcte d'utiliser les champs de bits est de ne pas utiliser les champs de bits. –