Please Try this
public struct A
{
public int first;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct B
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public char[] first;
}
[StructLayout(LayoutKind.Explicit)]
public struct CUnion
{
[FieldOffset(4)]
public A _a;
[FieldOffset(0)]
public B _b;
}
public struct C
{
public int type;
public CUnion u;
}