【发布时间】:2009-02-25 19:01:14
【问题描述】:
我正在使用位域来轻松访问我正在尝试为没有 FPU 的微控制器制作的浮点库。
问题是我似乎无法使其与位域一起使用。看看:
typedef struct
{
union{
unsigned long mantissa: 23;
unsigned long exponent: 8;
unsigned long sign: 1;
float all;
};
}_float __attribute__((__packed__));
问题在于,当我尝试访问或更改任何内容时,它会将位域分别视为从末尾开始的 1、8、23 位。虽然它应该是从末尾开始的 23 位,然后是 8 位,然后是最后一位。除非我完全误解了位域的使用。我认为使用 packed 可以解决问题,但如您所见,并没有。
任何帮助将不胜感激。我不止一次在谷歌上搜索时被引导到这个网站,所以我寄予厚望。
【问题讨论】:
-
使用位域的正确方法是不使用位域。
标签: c bit-fields unions