Остальные компилеры это понимают по умолчанию.
Код
#pragma pack(1)
typedef struct
{
union
{
struct
{
unsigned char bRecipient : 5;
unsigned char bType : 2;
unsigned char bDir : 1;
};
unsigned char bmRequestType;
};
unsigned char bRequest;
union
{
unsigned short wValue;
unsigned char bValue[2];
};
union
{
unsigned short wIndex;
unsigned char bIndex[2];
};
unsigned short wLength;
} USB_SETUPREQUEST;
#pragma pack()
typedef struct
{
union
{
struct
{
unsigned char bRecipient : 5;
unsigned char bType : 2;
unsigned char bDir : 1;
};
unsigned char bmRequestType;
};
unsigned char bRequest;
union
{
unsigned short wValue;
unsigned char bValue[2];
};
union
{
unsigned short wIndex;
unsigned char bIndex[2];
};
unsigned short wLength;
} USB_SETUPREQUEST;
#pragma pack()