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

7
C#提供了StructLayoutAttribute.Pack,但它的行为是“每个成员都至少获得指定对齐方式,无论它是否需要”,而C++中#pragma pack的行为是“每个成员都获得它所需的对齐方式,除非它需要比指定的对齐方式更多,否则不能保证获得超过这个值”。是否有一种方法可以使C#中类似于C++中具有特定#pragma pack的相似结构的布局相同,而不是使用StructLayout(LayoutKind.Explicit)和FieldOffset在每个成员上或插入未使用的填充成员?

你能提供一个代码示例来说明你所看到的差异以及它为什么会导致问题吗?StructLayout.Pack 总是适合我的需求。 - Mattias S
1个回答

9

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接