複数のDWORDにまたがるビットフィールドに独立したビットをプログラムする必要があります。私は現在、次のような構造体を使用しています
typedef struct _myStruct
{
union
{
struct
{
DWORD field1 : 16
DWORD field2 : 8
DWORD field3 : 8
};
DWORD value0;
};
union
{
struct
{
DWORD field4 : 32;
}
DWORD value1;
};
} myStruct;
これは、プログラマーが独立したフィールドに直接アクセスできるようにするためであり、対応するDWORDmyStruct.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
これを回避する方法はありますか?