c++ - 类的位宽

标签 c++ bitset

有一个类声明为:

class Payload {
    uint8_t m_a : 1;
    uint8_t m_b : 5;
    uint8_t m_c : 2;
    uint8_t m_d : 4;
};

你看,sizeof(Payload) == 2。到目前为止,一切都很好。总bit数为12,超过8bit,占用2Bytes。

但是有没有办法获取类声明的位数?我的意思是返回“12”...?一定要使算法适用于任何类型的类定义位域,理论上任何大小...

最佳答案

不,不是以符合标准的方式。

[class.bit]/1 :

the bit-field attribute is not part of the type of the class member

这意味着这些信息无法在编译时提取。任何使用运行时自省(introspection)技术查找此信息的尝试最多都依赖于实现定义的行为。

关于c++ - 类的位宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65161639/

相关文章:

c++ - 当函数返回通过引用传递时检查对象是否存在

没有框架的 C++ GUI

java - 找到多个 BitSets java 的共同父级

JAVA BitSet 设置

c++ - std::bitset 是否保证结构中的连续内存和恒定大小(以避免填充?)

c++ - 为什么 std::{container}::emplace 不推断其参数类型?

c++ - 基于堆栈的 RAII 是否保证仅在超出 C++ 范围后运行?

java - boolean vector 的 BitSet 表示

c++ - GDB 奇怪的行为 - Linux