将压缩结构分配给全局结构时发出警告

时间:2016-07-12 11:01:33

标签: c initialization arm variable-assignment packed

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

为什么?中间的局部变量如何产生差异?

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

0 个答案:

没有答案