[C#]
[StructLayout(LayoutKind.Explicit)]で 全てのメンバ変数に対して明示的に位置を指定となる。
[StructLayout(LayoutKind.Explicit)]
unsafe struct ImageData
{
[FieldOffset(0)]
public int Width;
[FieldOffset(4)]
public int Height;
[FieldOffset(8)]
public byte* Buf;
//※まだフィールドがある場合は注意!
// ポインタ型は32bitとは限らない
public void Show()
{
for(int y = 0; y < Height; y++)
{
for (int x = 0; x < Width; x++)
Console.Write("{0,4}", Buf[y * Width + x]);
Console.WriteLine();
}
}
}ネタ元