Предупреждение при назначении упакованной структуры глобальной структуре

Я использую (встроенную) архитектуру 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 ответов

Другие вопросы по тегам