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