文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C语言的黑暗角落: bit field

C语言的黑暗角落: bit field

时间:2010-06-21  来源:slimzhao

C99中只说到bit field的类型为Bool 和 int(及unsigned int).
但gcc及VC中都可以用char, short来定义其类型, gcc的warning会对使用Bool和int之外的类型时报告警告:

warning: type of bit-field '' is a GCC extension

  • 可以有unmaed bit-field, 这是标准C允许的, 目的是允许定义一些padding来迎合特定的布局.
  • 可以有宽度为0的field, 明确的语意是结束对当前存储单元的使用, 让下一个bit field成员使用一个崭新的存储单元
  • 如 struct A{ unsigned int a1: 7;  unsigned int a2: 2; }; 这种情况, a1占用第一个字节中的7个bit, 只剩下一个bit, 对于a2的分配, 可以直接跳过这一个bit不用, 使用下一个存储单元(字节), 也可以使用上一个字节中的一个bit, 再用下一个存储单元中的一个bit来凑齐, 具体选择是由实现定义的.
  • bit的使用顺序, 是最高位在前, 还是反之, 也是由实现定义的.
  • 在bit field定义中, 只写int 等于只写char, 其是signed还是unsigned也是实现定义的, 所以在bit-field中应该总是写明signed int, unsigned int.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载