[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