Предупреждение при назначении упакованной структуры глобальной структуре
Я использую (встроенную) архитектуру 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;
Это почему? Как локальная переменная в середине имела значение?
Я знаю, что это предупреждение возникает при прохождении невыровненного указателя, но здесь это не указатель.