【发布时间】:2014-01-03 19:40:24
【问题描述】:
我使用 C 和 C++ 已经有一段时间了。
在学习基础知识的同时,您会遇到such interesting thing as bit fields。 在编程实践中位域的使用具有某种争议性。
这种低级功能的使用在哪些情况下提供了真正的好处,是否有正确使用位域的具体示例?
【问题讨论】:
-
尝试编写一个可变大小的列式数据库。
-
这有点宽泛。但是依赖于平台的低级序列化可以从位字段中受益,大型内存数据结构、缓存友好的内存绑定工作等也可以。
-
@JamesKanze “以平台相关的方式”这句话很重要:标准未指定的布局并不意味着您的编译器未指定,许多编译器确实以很好的打包方式布局它们并且是稳定的在编译器的迭代之间。
-
@Yakk 一些编译器(我想)确实记录了这一点,但这确实将您与特定的编译器联系起来。大多数编译器都没有。 (我在使用过的任何编译器中都没有找到这样的文档。)
-
@JamesKanze:ISO/IEC C 标准要求记录此类实现细节。例如参见ARM's documentation。如果您的编译器没有记录这一点,那么就不能说它真正符合 ISO 标准。
标签: c++ c bit-fields