是否可以使用位域数组?

新手上路,请多包涵

我很想知道, 是否可以使用位字段数组? 喜欢:

 struct st
{
  unsigned int i[5]: 4;
};

原文由 msc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 790
1 个回答

不,你不能。位域只能与整型变量一起使用。

C11-§6.7.2.15

位字段的类型应为 _Boolsigned intunsigned int 或其他一些实现的合格或不合格版本

或者你可以这样做

struct st
{
    unsigned int i: 4;
} arr_st[5];

但它的大小将是 struct 的大小的 5 倍(如 @ Jonathan Leffler评论 中所述),每个成员都有 5 个成员,每个成员都有位字段 4 。所以,这里没有多大意义。

更紧密地你可以做到这一点

struct st
{
    uint8_t i: 4;   // Will take only a byte
} arr_st[5];

原文由 haccks 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题