打印

怎么占一个字节

[复制链接]
1279|13
手机看帖
扫描二维码
随时随地手机跟帖
楼主
这个不能怪Keil,是C标准规定了位域是2字节对齐的……也就是说就算你只定义了1bit的位域,它也要占用2字节,其它的15bit就这么空着……不信试一下以下代码:
typedef struct
{
         unsigned b0:1;
         unsigned b1:1;
         unsigned b2:1;
         unsigned b3:1;
         unsigned b4:1;
         unsigned b5:1;
         unsigned b6:1;
         unsigned b7:1;
}oneBitStructs;
typedef union
{
         oneBitStructs oneBit;
//        unsigned char allBits;
}myFlag;

myFlag flag;
void main(void)
{
         int size = sizeof(myFlag);
         size = sizeof(oneBitStructs);
         while(1)
                 ;
}
优化级别设为0
单步调试过程可以看到myFlag这个联合体占用了2字节,结构体oneBitStructs也是一样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则