2

我在(嵌入式)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;

这是为什么?中间的局部变量是如何产生影响的?

我知道在传递未对齐的指针时会发生此警告,但这里它不是指针。

4

0 回答 0