C#提供了StructLayoutAttribute.Pack,但它的行为是“每个成员都至少获得指定对齐方式,无论它是否需要”,而C++中#pragma pack的行为是“每个成员都获得它所需的对齐方式,除非它需要比指定的对齐方式更多,否则不能保证获得超过这个值”。是否有一种方法可以使C#中类似于C++中具有特定#pragma pack的相似结构的布局相同,而不是使用StructLayout(LayoutKind.Explicit)和FieldOffset在每个成员上或插入未使用的填充成员?
在尝试使用StructLayout.Pack之后,发现它确实与C++中的#pragma pack完全相同。相信MSDN对于StructLayout.Pack的文档(声称与我原始帖子描述的行为相同)是一个错误。