问一个在ADS编译器下关于结构体对齐的问题. 如下结构体:
typedef struct
{
U8 bLength;
U8 bDescriptorType;
#pragma pack(paush,1
struct
{
U8 address:4;
U8 reserved:3;
U8 direction:1;
} bEndpointAddress;
#pragma pack(pop)
U8 bmAttributes;
U16 wMaxPacketSize;
U8 bInterval;
} USB_endpoint_desc_t;
我用了packed关键词后.sizeof(USB_endpoint_desc_t)还是8个字节. 应该怎么设置该结构体才能正确为7个byte?
------解决方案--------------------
没遇到过这样的问题,关注中!
------解决方案--------------------
你只能对齐结构体内,整个结构还是要按照双字节对齐的,所以必须是偶数个字节,小端模式的时候ADS应该是最后一个字节占位。
------解决方案--------------------
结构体是按字对齐的,sizeof(USB_endpoint_desc_t)不可能是7个字节