変数属性 aligned を使用すると、変数または構造体メンバーに対して、バイト単位の最小限の位置合わせを指定することができます。
位置合わせを指定することによって、コンパイラーは、この方法で位置合わせされた変数または構造体メンバーとの間で
コピーを行うときに、メモリーの最大量をコピーする命令を使用することができるため、コピー操作の効率が上がります。
aligned 変数属性が自動変数に適用されると、位置合わせは、スタックの最大の位置合わせによって 限定されます。属性 aligned がビット・フィールド構造体メンバーに適用されると、コンテナーの位置合わせが位置合わせ係数より 大きい場合を除き、ビット・フィールド・コンテナーは位置合わせ仕様に従って調整されます。 この場合、属性 aligned は無視されます。
>>-__attribute__------------------------------------------------> >--((--+-aligned-----+--+------------------------+--))--------->< '-__aligned__-' '-(--alignment_factor--)-'
ここで、alignment_factor は 、2 の正の累乗値を求める定数式です。
位置合わせ係数 (およびそれを囲む括弧) を省略すると、コンパイラーが位 置合わせを 決定することができます。この場合の位置合わせは、ターゲット・マシン上で処理できる任意 の普通型 (つまり、整数または実数) に対する最大の位置合わせ、そのものとなります。
aligned 属性は、位置合わせを増加させるだけです。packed 属性を使うと、それを減少できます。プラットフォームの最大量より大き な位置合わせ係数は、警告とともに無視され、その結果は予測できません。
関連参照