【问题标题】:Does C# have an equivalent to #pragma pack in C++?C# 是否与 C++ 中的#pragma pack 等效?
【发布时间】:2010-12-04 21:53:55
【问题描述】:

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

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

【问题讨论】:

  • 您能否提供一个代码示例来说明您看到的差异以及导致问题的原因? StructLayout.Pack 一直满足我的需求。

标签: c# c++ marshalling


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 2013-05-06
    • 2020-02-07
    • 1970-01-01
    • 2021-04-30
    • 2010-12-03
    • 2017-01-01
    • 2010-09-10
    相关资源
    最近更新 更多