C ++如何获取位域成员的大小?

亚历山大·布劳伦特(Alexander Braunreuther)

我试图得到一个位域的大小。

例如,我有一个通用句柄:

template<size_t n, size_t m>
struct handle
{
    uint32 index : n; 
    uint32 validation : m;
}

现在,我想获取成员的人数。

我找到了一个宏,当我有个宏时可以工作,handle<16, 16>并将所需的成员扩展到sizeof在这种情况下,如果我传入index成员,则会得到16我的输出。

但是在那里,我必须传递我的输出变量。

有没有办法用一些模板魔术直接扩展到所需的数字?这样我就可以通过sizeof_bit(class, member)并获得sizebit该成员大小?

TC

也许像

template<size_t n, size_t m>
struct handle
{
    enum { index_bits = n };
    enum { validation_bits = m };
    uint32_t index : n; 
    uint32_t validation : m;
};

演示

如果您无法控制定义位域的结构,则可以执行以下操作来在运行时对其中的位数进行计数,但这效率很低。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章