Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重新创建C+时发生对齐错误+;C中具有非基元类型的并集类型# 我有一个简单的联合(字节数组和一个短),在C++中,我试图把它移植到C语言,得到不能加载类型…联盟。。。因为它包含偏移量为0的对象字段,该字段未正确对齐或与非对象字段重叠。我怀疑我的实现不起作用,因为我将数组作为结构成员之一 现有C++联盟: union { char c[2]; short data; } u;_C#_C++_Struct_Marshalling_Unions - Fatal编程技术网

C# 重新创建C+时发生对齐错误+;C中具有非基元类型的并集类型# 我有一个简单的联合(字节数组和一个短),在C++中,我试图把它移植到C语言,得到不能加载类型…联盟。。。因为它包含偏移量为0的对象字段,该字段未正确对齐或与非对象字段重叠。我怀疑我的实现不起作用,因为我将数组作为结构成员之一 现有C++联盟: union { char c[2]; short data; } u;

C# 重新创建C+时发生对齐错误+;C中具有非基元类型的并集类型# 我有一个简单的联合(字节数组和一个短),在C++中,我试图把它移植到C语言,得到不能加载类型…联盟。。。因为它包含偏移量为0的对象字段,该字段未正确对齐或与非对象字段重叠。我怀疑我的实现不起作用,因为我将数组作为结构成员之一 现有C++联盟: union { char c[2]; short data; } u;,c#,c++,struct,marshalling,unions,C#,C++,Struct,Marshalling,Unions,尝试的C#实施: [StructLayout(LayoutKind.Explicit, Size =2)] public struct Union { [MarshalAs(UnmanagedType.LPArray)] [FieldOffset(0)] public byte[] c; [FieldOffset(0)] public short data; } 以前也回答过类似的问题,但它似乎只适用于基本类型: 提前谢谢。您尝试过“StructLayo

尝试的C#实施:

[StructLayout(LayoutKind.Explicit, Size =2)]
public struct Union
{
    [MarshalAs(UnmanagedType.LPArray)]
    [FieldOffset(0)]
    public byte[] c;
    [FieldOffset(0)]
    public short data;
}
以前也回答过类似的问题,但它似乎只适用于基本类型:

提前谢谢。

您尝试过“StructLayout(LayoutKind.Explicit,Size=2,Pack=1)”吗?C默认为4字节的封装大小似乎有问题