我正在运行(嵌入式)ARM架构。
我有一个结构Brown
:
typedef struct
{
float A;
float B;
float C;
}Brown;
包含Abo
的压缩结构Brown
:
#pragma pack(2)
typedef struct
{
Brown Left;
Brown Right;
}Abo;
Abo AboSent;
全局变量:
Brown Dest;
现在我想将AboSent.Left
分配给全局变量Dest
(未打包):
Dest = AboSent.Left;
编译器给出了错误:
use of address of unaligned structure member
现在当我在中间使用一个局部变量时,它编译得很好而没有警告:
Brown Test = AboSent.Left;
Dest = Test;
为什么?中间的局部变量如何产生差异?
我知道传递未对齐指针时会发生此警告,但这里不是指针。