繁体   English   中英

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

[英]C++ How to get the size of bitfield members?

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

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

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大小?

也许像

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;
};

演示

如果你有过定义位域结构无法控制,你可以做一些像这样算在运行时在其位的数量,但它的效率非常低。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM