У меня вот так было
Код
typedef struct __attribute__ ((__packed__))
{
BYTE bLength;
BYTE bDescriptorType;
struct __attribute__ ((__packed__))
{
BYTE address : 4;
BYTE reserved : 3;
BYTE direction : 1;
} bEndpointAddress;
BYTE bmAttributes;
WORD wMaxPacketSize;
BYTE bInterval;
} USB_endpoint_desc_t;
Вложенные структуры тоже приходилось явно упаковывать.
#pragma pack(...) в GCC есть, но вот для ARM архитектуры не поддерживается (или не поддерживался.)