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