2012-05-08 2 views
1

임베디드 장치에 연결하기 위해 구조 내부에 배열을 만들어야합니다. 이와 같이 우리는 구조체와 내부 필드에 대한 포인터를 사용합니다 ... 아래의 코드를 시도했지만 100 개의 int를 만들어야합니까 ??포인터를 가져와야하는 구조체에 배열을 만드는 방법은 무엇입니까?

[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; 

답변

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)); 
관련 문제