我现在定义一个变量
#pragma pack(4)
struct test
{
U4 a;
U1 b;
U4 c;
}
#pragma pack()
通过debug看变量地址发现 &c = &b+2,而不是按4字节对齐。
进一步实验发现通过pragma只能实现1字节对齐,设置成4,8字节对齐仍然是按照两字节对齐。
这个是什么问题造成的?
灰小子:
这个和编译器有关系,你找一下iar for msp430编译器的说明文件
Triton Zhang:
因为MSP430是16位的处理器。如果你换成32位的处理器,这个定义就会是&C=&B+4;