offsetof和sizeof类似的位字段功能
offsetof and sizeof like functionality for bit fields
结构和类有offsetof
宏和sizeof
运算符。
是否有任何方法可以为位字段获得类似的功能,以便可以查询位字段成员的位差和位数?
sizeof
可以使用#define field_name_size n
来模拟,但对于offsetof
,我担心使用#define field_name_offset
会变得太麻烦,因为那时似乎必须使用一些复杂的公式来考虑比特字段中的所有先前成员。
在某些情况下,它将使人们能够克服手动保持代码与位字段定义同步的需要,这很容易出错。
一个例子是对位字段成员的互锁写入,其中需要使用自定义函数来写入这些成员,因为编译器不提供这样的功能。
此外,我理解编译器可能会以不同的方式实现位字段布局。此类宏/运算符的可用性也将减少该问题的影响。
是否有任何方法可以获得位字段的类似功能,以便可以查询位字段成员的位偏移量和位大小?
不,没有办法做到这一点。无法从位字段成员推导出位大小偏移量。
此外,sizeof()
将始终返回基础类型的大小,最小值为char
,因此1是您将检索的最小大小。
不,没有。这也是您应该避免位字段并使用算术和完整的可寻址整数类型来创建自己的位数组等的众多原因之一。
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 是否有与 C# Structs/StructLayout 等效的功能,C++中的字段偏移量?
- 基于不同字段的对象向量的排序功能
- 派生类中的成员字段别名(无访问器功能)
- C 模板功能在任何集合成员字段上迭代
- std :: async在成员字段的成员功能上
- 好友功能 - 无法访问私人字段C++
- offsetof和sizeof类似的位字段功能