Есть ли в C# эквивалент #pragma pack в C++?

C# предоставляет StructLayoutAttribute.Pack, но его поведение таково: "каждый член получает по крайней мере указанное выравнивание, хочет он этого или нет", тогда как поведение #pragma pack в C++ равно "каждый член получает выравнивание, которое он хочет, если только он не хочет большего чем указанное выравнивание, в этом случае не гарантируется получить больше, чем это ".

Есть ли способ заставить расположение структуры в C# быть таким же, как расположение аналогичной структуры в C++ с определенным пакетом #pragma, кроме использования StructLayout( LayoutKind.Explicit) и FieldOffset на каждом элементе или вставки неиспользованные отступы?

1 ответ

Решение

После экспериментов со StructLayout.Pack выяснилось, что он действительно делает то же самое, что и #pragma pack в C++. Поверить в документацию MSDN для StructLayout.Pack (которая утверждала поведение, описанное в моем первоначальном посте) было ошибкой.

Другие вопросы по тегам