我必须在跨越多个 DWORDS 的位域中编写独立位。我目前使用的结构如下
typedef struct _myStruct
{
union
{
struct
{
DWORD field1 : 16
DWORD field2 : 8
DWORD field3 : 8
};
DWORD value0;
};
union
{
struct
{
DWORD field4 : 32;
}
DWORD value1;
};
} myStruct;
我这样做是为了让程序员可以直接访问独立的字段,而不是记住相应的 DWORD 即myStruct.field1
等。这在 Visual Studio 中运行良好,但是当我使用未命名的结构和联合时 GCC 会抱怨。为了纠正这个问题,我尝试如下命名联合和结构:
union _DW0
{
struct _BF
{
DWORD field1 : 16
DWORD field2 : 8
DWORD field3 : 8
} BF;
DWORD value0;
} DW0;
但是现在访问对程序员不友好.. 即尝试对此进行编程的人必须记住每个字段属于哪个 DWORD。例如:myStruct.DW0.field1
有没有办法解决这个问题?