The*_*Man 5 c# c++ marshalling
C#提供了StructLayoutAttribute.Pack,但它的行为是"每个成员至少获得指定的对齐,无论它是否需要",而C++中#pragma pack的行为是"每个成员都得到它想要的对齐,除非它想要更多比指定的对齐,在这种情况下,它不能保证得到更多".
有没有办法使C#中的结构布局与C++中具有特定#pragma包的类似结构的布局相同,除了在每个成员上使用StructLayout(LayoutKind.Explicit)和FieldOffset,或者插入未使用的填充成员?
在尝试使用StructLayout.Pack之后,它确实与C++中的#pragma pack完全一样.相信StructLayout.Pack的MSDN文档(声称我原来的帖子中描述的行为)是一个错误.