構造体のアライメントを設定する - C#
構造体のアライメントを設定する場合にはStructLayout属性(StructLayoutAttribute)を利用します。
StructLayoutはSystem.Runtime.InteropServices名前空間にあるため、
using System.Runtime.InteropServices;
が必要です。
記述した順番通りに配置される例
[StructLayout(LayoutKind.Sequential)]
struct POINT {
public int x;
public int y;
}
FieldOffsetで指定した位置に配置される例
[StructLayout(LayoutKind.Explicit)]
struct POINT
{
[FieldOffset(0)]
public int x;
[FieldOffset(4)]
public int y;
}
16バイトアライメントで配置される例
[StructLayout(LayoutKind.Sequential, Pack=16)]
struct POINT
{
public int x;
public int y;
}
16バイトアライメントで配置し構造体のサイズを64バイトにする例
[StructLayout(LayoutKind.Sequential, Pack = 16, Size=64)]
struct POINT3
{
public int x;
public int y;
}
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用