[StructLayout(LayoutKind.Explicit, Pack = 1, Size = 20)]
public struct StatusStruct
{
/// <summary>
/// validation field
/// </summary>
[FieldOffset(0)]
public Int32 _magic;
/// <summary>
/// Packet sequence number
/// </summary>
[FieldOffset(4)]
public Int32 _seq;
/// <summary>
/// Packet timestamp
/// </summary>
[FieldOffset(8)]
public Int64 _timestamp;
/// <summary>
/// Length of data section
/// </summary>
[FieldOffset(16)]
public Int32 _len;
}
我有一個奇怪的問題上ARM4/WinCE的地方Marshal.SizeOf()這個結構返回24個字節,但在x86/Win32的系統上則返回20個字節。這嚴重阻礙了我通過電線的互操作性。任何人都知道爲什麼?結構佈局的WinCE提供了意想不到的效果
在最後使用未使用的4字節(int32)填充結構使它們在兩種體系結構上都是相同的大小。這解決了我的問題。我同意ctacke ......這似乎是CF中的一個bug。 (我使用3.5) – dviljoen 2011-03-01 14:20:58