2013-01-19 3 views
0

structs 배열이 필요합니다 (고정 크기로 관리되지 않는 structs).하지만 시각적 스튜디오는 내 코드가 마음에 들지 않습니다.

기본적으로 나는 구조체에다른 구조체 안에 구조체 배열을 고정 시켰습니까?

fixed page_table tables[1024];과 같은 것이 필요합니다.

이 비주얼 스튜디오 적합 던져 만드는 코드는, 내가 이것을 달성 할 수 어쨌든이다 (그리고 나는 미리 초기화 모든 필요)

[StructLayout(LayoutKind.Explicit, Pack = 1)] 
public unsafe struct page_directory 
{ 
    [FieldOffset(0)] 
    public fixed page_table tables[1024]; 

    [FieldOffset(0x8000)] 
    public fixed uint tablesPhysical[1024]; 

    [FieldOffset(0x9000)] 
    public uint physicalAddr; 
} 

[StructLayout(LayoutKind.Explicit, Pack = 1)] 
public unsafe struct page_table 
{ 
    [FieldOffset(0)] 
    public fixed page pages[1024]; 
} 
+0

"좋아하지 않습니까?"하고 "적합 여부"를 분명히 할 수 있습니까? 코드를 사용해 보면 어떻게되며 어떻게 예상과 다른가? 오류 메시지가 표시됩니까? 그렇다면 어떤 오류 메시지가 나타 납니까? – Guffa

+0

고정 크기 버퍼 유형은 다음 중 하나 여야합니다. bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float 또는 double 고정 크기 버퍼는 나열된 유형 이외의 유형이 될 수 없습니다. 이 오류를 피하려면 다른 유형을 사용하거나 고정 배열을 사용하지 마십시오. – user1454902

+0

하지만 문제는 내 구조체가 고정 된 크기를 가지고 있기 때문에 그 안에 문자열을 던지거나 ..... 그리고 int는 구조체이며 어떻게 든 C#은이를 수용합니다 ..... – user1454902

답변

1

오류 메시지는 매우 분명하다. 고정 버퍼와 함께 나열된 유형 이외의 다른 유형은 사용할 수 없습니다.

오류 메시지도 가능한 해결책을 제공합니다. 허용 된 유형 중 하나를 사용하거나 고정 버퍼를 사용하지 마십시오.

실제로 사용하려고하는 코드가 필요한 경우 수행하려는 작업을 수행 할 수없는 지점에 도달했습니다.

+0

글쎄, 내가 이해하지 못하는 것은 그 타입을 받아들이는 방법이다. 왜냐하면 그 중 어느 것도 실제로 C# 언어로 하드 코드 된 것이 아니고 어딘가에 존재하기 때문이다 MSCORLIB.DLL ... – user1454902

+0

@ user1454902 : 고정 버퍼는 이러한 유형으로 제한되지만 설명서에 이유가 명시되어 있지 않습니다. 이러한 유형은 실제로 언어로 하드 코딩되지만 프레임 워크에서도 정의됩니다. – Guffa