C#是否与C ++中的#pragma pack等效?

时间:2009-10-08 08:07:35

标签: c# c++ marshalling

C#提供了StructLayoutAttribute.Pack,但它的行为是“每个成员至少获得指定的对齐,无论它是否需要”,而C ++中#pragma pack的行为是“每个成员都得到它想要的对齐,除非它想要的不仅仅是指定的对齐方式,在这种情况下,它不能保证得到更多“。

是否有办法使C#中的结构布局与C ++中具有特定#pragma包的类似结构的布局相同,而不是在每个成员上使用StructLayout(LayoutKind.Explicit)和FieldOffset ,或插入未使用的填充成员?

1 个答案:

答案 0 :(得分:7)

在尝试使用StructLayout.Pack之后,它确实与C ++中的#pragma pack完全一样。相信StructLayout.Pack的MSDN文档(声称我原来的帖子中描述的行为)是一个错误。