gpt4 book ai didi

C#控制数据的对齐方式

转载 作者:太空狗 更新时间:2023-10-29 20:17:50 29 4
gpt4 key购买 nike

在 C++ 中,您可以使用 __declspec( align( # ) ) 声明符来控制用户定义数据的对齐方式。如何为 C# 执行此操作。我的 dll 中有两个用 Assembler 编写的程序。过程的参数(两个数组)应按 16 个字节对齐。对于 C++,它工作正常。

我只是使用声明

__declspec( align( 16 ) )
double a[2]={10.2,10.6};

最佳答案

如果您正在寻找托管到非托管互操作(在基于 C#/.NET 和基于 C/C++/汇编的软件之间传输数据),您可以使用 StructLayout 的组合属性和 FieldOffset 属性:

[StructLayout(LayoutKind.Explicit, Pack = 16)]
public class MyDataClass {
[FieldOffset(0)]
double[] a;
}

根据 MSDN:

The System.Runtime.InteropServices.StructLayoutAttribute.Pack field determines the memory alignment of data fields of a target object.

https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.structlayoutattribute.pack

关于C#控制数据的对齐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10305548/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com