1

为了连接到嵌入式设备,我需要在结构内创建一个数组。因此,我们使用指向结构及其内部字段的指针......我尝试了下面的代码,但我应该只创建 100 个整数并完成吗?

[StructLayout( LayoutKind.Sequential )]
public struct HRTF
{
    UInt32 PPP;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
    UInt32[] taps;
    . . . 
}

. . . 

HRTF effects = new HRTF();

/* --- ERROR cannot get address of, Sizeof ect ..to unmanaged typE 'HRTF' */
int offset = ((int)&effects.taps - startOffset) / 4; 
int length = sizeof(HRTF) / 4;
4

1 回答 1

1
fixed (uint* pt = effects.taps)
{
    // pt is not pointer to taps
}

var bts = Marshal.SizeOf(effects); // bts has size of HRTF in bytes.

或者

var bts = Marshal.SizeOf(typeof(HRTF));
于 2012-05-08T16:59:01.580 回答