gcc中的结构体成员位域

1===============================================

struct test {

  int m: 1;  //此字段使用一位

};

sizeof(struct test)  使用x86_64的gcc本地编译运行得到结果为4

 2===============================================

 struct test {

  int a0: 1;

  int a1: 1;

  int a2: 1;

  .....

  int a31: 1;

};

sizeof(struct test) 使用x86_64的gcc本地编译运行得到结果为4

3 ===============================================

 

struct test {

  int a0: 1;

  int a1: 1;

  .....

  int a31: 1;

  int b0: 1;

};

sizeof(struct test) 使用x86_64的gcc本地编译运行得到结果为8

 

得出结论,编译器以较大成员对齐结构体的(描述不太准确)。 成员后面的冒号表示指定该成员位数,后面的数字为位数值,必须为非负整数,不然编译报错。有此指定后表示此成员为位域成员,不能使用sizeof运算符求值,不然编译报错。结构中的普通成员可以使用sizeof运算符求值

 

转载于:https://www.cnblogs.com/zhangliwangyuan/p/4264820.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值