(組み込み) 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;
何故ですか?真ん中のローカル変数がどのように違いを生んだのですか?
この警告は、アラインされていないポインターを渡すときに発生することを知っていますが、ここではポインターではありません。