【发布时间】:2014-05-12 10:34:46
【问题描述】:
我对 C++ 中 BitFields 的语法约定以及是否需要在分配的位数中考虑不同的命名变量方法感兴趣。
union BitField32
{
struct {
unsigned int a : 1;
unsigned int b : 1;
};
unsigned int data;
};
BitField32 Flags;
对
union BitField32
{
struct {
unsigned int a, b : 1;
};
unsigned int data;
};
BitField32 Flags;
在底部示例中命名变量是否需要使用两位或分配一个位
【问题讨论】:
-
为什么不尝试将第二个 union 中的
a设置为大于 1 的值,看看会发生什么? -
根据 cppreference.com 有 C++98 和 C++11 对位域的引用。我目前正在使用 C++11。
-
“在底部示例中命名变量是否需要使用两个位,或者它们是否分配了一个位”-> 需要改写一下吗?也许你不了解位域。毕竟这是一个
int,位域的每个方面都依赖于实现。
标签: c++ c++11 bit-fields