比特打包结构中的数组

我想在一个位打包的结构中有一个数组.我静态地知道数组的大小(32),我希望数组中的每个元素都是一个位.例如,我希望能够说出类似的话:

struct example_s {
  // ...
  unsigned int flags[32] : 32;
} __attribute__((__packed__));

我尝试了几件事,但是gcc不会让步.能够这样做是很好的,这样我就可以编写遍历打包数组中元素的干净代码.想法?

解决方法

如果你只是将它放入一个(32位)int,那么你可以使用for循环干净地迭代这些位,如下所示:

for (bit = 0; bit < 32; bit++)
    flagValue = ((flags & (1<<bit)) != 0;

写入比数组索引语法难得多.

如果您希望隐藏位错误以使代码更具可读性,您甚至可以使用函数或宏来访问位 – 例如GetFlag(位)

相关文章

文章浏览阅读903次。文章主要介绍了收益聚合器Beefy协议在币...
文章浏览阅读952次。比特币的主要思路是,构建一个无中心、去...
文章浏览阅读2.5k次。虚拟人从最初的不温不火,到现在步入“...
文章浏览阅读1.3k次,点赞25次,收藏13次。通过调查和分析用...
文章浏览阅读1.7k次。这个智能合约安全系列提供了一个广泛的...
文章浏览阅读1.3k次。本文描述了比特币核心的编译与交互方法...