我经常使用这样的代码:
struct teststruct
{
uint8_t i1;
uint16_t i2;
uint32_t i4;
} __attribute__((__packed__));
struct teststruct *protocol = (struct teststruct *)buffer;
uint16_t var = protocol->i2;
为了通过结构访问协议数据。
该代码适用于 AVR gcc 4.6、4.7 和 Win32 4.6、4.7 和 Linux 4.6 但是现在从 (MingW) gcc 4.8 它不能按预期工作。sizeof(struct teststruct) 将返回 8。
我没有找到任何提示为什么它不再起作用了。或者是否有其他方式以结构化方式访问协议缓冲区?