2009-10-08 43 views
5

C# cung cấp StructLayoutAttribute.Pack, nhưng hành vi của nó là "mọi thành viên nhận được ít nhất sự liên kết được chỉ định cho dù nó muốn hay không", trong khi hành vi của gói #pragma trong C++ là "mọi thành viên đều được căn chỉnh nó muốn, trừ khi nó muốn nhiều hơn sự liên kết được chỉ định, trong trường hợp đó nó không được đảm bảo để có được nhiều hơn thế ".C# có tương đương với gói #pragma trong C++ không?

Có cách nào khiến bố cục của cấu trúc trong C# giống với bố cục của cấu trúc tương tự trong C++ với gói #pragma cụ thể không, ngoài việc sử dụng StructLayout (LayoutKind.Explicit) và FieldOffset trên mỗi thành viên, hoặc chèn các thành viên đệm không sử dụng?

+0

Bạn có thể cung cấp ví dụ mã minh họa sự khác biệt mà bạn đang thấy và lý do khiến sự cố đó gây ra sự cố không? StructLayout.Pack luôn đáp ứng nhu cầu của tôi. –

Trả lời

6

Sau khi thử nghiệm với StructLayout.Pack, có vẻ như nó thực sự thực hiện chính xác điều tương tự như gói #pragma trong C++. Tin rằng tài liệu MSDN cho StructLayout.Pack (đã tuyên bố hành vi được mô tả trong bài viết gốc của tôi) là một sai lầm.

Các vấn đề liên quan