【发布时间】:2010-12-04 21:53:55
【问题描述】:
C# 提供了 StructLayoutAttribute.Pack,但它的行为是“每个成员都至少获得指定的对齐方式,无论它是否愿意”,而 C++ 中#pragma pack 的行为是“每个成员都获得它想要的对齐方式,除非它想要的不仅仅是指定的对齐方式,在这种情况下,它不能保证得到更多”。
除了在每个成员上使用 StructLayout( LayoutKind.Explicit ) 和 FieldOffset 之外,有没有办法使 C# 中结构的布局与具有特定#pragma 包的 C++ 中类似结构的布局相同,还是插入未使用的填充成员?
【问题讨论】:
-
您能否提供一个代码示例来说明您看到的差异以及导致问题的原因? StructLayout.Pack 一直满足我的需求。
标签: c# c++ marshalling