Xamarin Public Jenkins (auto-signing) cb2f3eca2f Imported Upstream version 5.10.0.49
Former-commit-id: 26d56271ea25d4854e5aa56dee7109315d571761
2018-01-25 19:12:49 +00:00

61 lines
927 B
C#

using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Explicit)]
struct DefaultPack
{
[FieldOffset(0)]
public int A;
[FieldOffset(4)]
public int A1;
[FieldOffset(8)]
public byte A2;
[FieldOffset(9)]
public int A3;
[FieldOffset(13)]
public int A4;
}
[StructLayout(LayoutKind.Explicit, Pack=2)]
struct ExplicitPack
{
[FieldOffset(0)]
public int A;
[FieldOffset(4)]
public int A1;
[FieldOffset(8)]
public byte A2;
[FieldOffset(9)]
public int A3;
[FieldOffset(13)]
public int A4;
}
[StructLayout(LayoutKind.Explicit, Size = 12)]
struct ExplicitSize
{
[FieldOffset(0)]
private long Data1;
[FieldOffset(8)]
private int Data3;
}
public class Program {
public static unsafe int Main(string[] args)
{
if (sizeof(DefaultPack) != 20)
return 1;
if (sizeof(ExplicitPack) != 18)
return 2;
if (sizeof (ExplicitSize) != 12)
return 3;
return 0;
}
}