我想将枚举定义为小于一个字节,同时保持类型安全。
将枚举定义为:
enum MyEnum : unsigned char
{
i ,j, k, w
};
我可以将它缩小到一个字节,但是我想让它只使用 2 位,因为我最多会有 4 个值。这可以做到吗?
在我使用枚举的结构中,以下内容不起作用
struct MyStruct
{
MyEnum mEnum : 2; // This will be 4 bytes in size
};
谢谢!
更新:
问题来自这种情况:
enum MyEnum : unsigned char
{
i ,j, k, w
};
struct MyStruct
{
union
{
signed int mXa:3;
unsigned int mXb:3;
};
union
{
signed int mYa:3;
unsigned int mYb:3;
};
MyEnum mEnum:2;
};
sizeof(MyStruct) 显示 9 个字节。理想情况下,我希望结构的大小为 1 个字节。
已实施解决方案的更新:
这个结构是一个字节,提供相同的功能和类型安全:
enum MyEnum :unsigned char
{
i,j,k,w
};
struct MyStruct
{
union
{
struct { MyEnum mEnum:2; char mXa:3; char mXb:3;};
struct { MyEnum mEnum:2; unsigned char mYa:3; unsigned char mYb:3;};
};
};