<分区>
Possible Duplicate:
When is it worthwhile to use bit fields?
我最近在查找按位运算符时偶然发现了 bitfield 的概念.它看起来很有趣并且是一个非常酷的概念,但是人们什么时候和/或为什么会在他们的代码中使用它?
我知道它在嵌入式系统编程中用得相当多,但为什么呢(我似乎找不到任何关于它为什么有用的信息)?它有什么优点吗?位域在哪些其他地方有用?
<分区>
Possible Duplicate:
When is it worthwhile to use bit fields?
我最近在查找按位运算符时偶然发现了 bitfield 的概念.它看起来很有趣并且是一个非常酷的概念,但是人们什么时候和/或为什么会在他们的代码中使用它?
我知道它在嵌入式系统编程中用得相当多,但为什么呢(我似乎找不到任何关于它为什么有用的信息)?它有什么优点吗?位域在哪些其他地方有用?
最佳答案
通常,当您不关心速度和内存布局时,使用位域。如果您关心这些事情,请不要使用位域。
如果您有一组 bool 标志,则可以使用位域将它们打包(减少存储所需的大小)。但是,只能使用位域来访问位域。
这是经典的大小与速度问题。
另外一个注意事项是,如果您有一组小于 native 字的位域,那么您的编译器可能会尝试填充和对齐位域结构。所以你必须结束#pragma pack'ing 结构或至少使用一个本地词。因此,如果您在 32 位机器上,并且碰巧有 32 个仅在内部使用的 bool 标志,那么这将是位域的一个很好的用途。
关于c++ - 什么时候以及为什么要在代码中使用位域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593396/