Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Attribútumok használatával testre szabhatja a szerkezetek memóriabeli lefektetett módját. Létrehozhat például egy uniót a C/C++-ban az StructLayout(LayoutKind.Explicit) és FieldOffset attribútumok használatával.
1. példa
Ebben a kódszegmensben az összes mező TestUnion ugyanazon a helyen kezdődik a memóriában.
' Add an Imports statement for System.Runtime.InteropServices.
<System.Runtime.InteropServices.StructLayout(
System.Runtime.InteropServices.LayoutKind.Explicit)>
Structure TestUnion
<System.Runtime.InteropServices.FieldOffset(0)>
Public i As Integer
<System.Runtime.InteropServices.FieldOffset(0)>
Public d As Double
<System.Runtime.InteropServices.FieldOffset(0)>
Public c As Char
<System.Runtime.InteropServices.FieldOffset(0)>
Public b As Byte
End Structure
2. példa
Az alábbi példa egy másik példa, amelyben a mezők eltérő, explicit módon beállított helyeken kezdődnek.
' Add an Imports statement for System.Runtime.InteropServices.
<System.Runtime.InteropServices.StructLayout(
System.Runtime.InteropServices.LayoutKind.Explicit)>
Structure TestExplicit
<System.Runtime.InteropServices.FieldOffset(0)>
Public lg As Long
<System.Runtime.InteropServices.FieldOffset(0)>
Public i1 As Integer
<System.Runtime.InteropServices.FieldOffset(4)>
Public i2 As Integer
<System.Runtime.InteropServices.FieldOffset(8)>
Public d As Double
<System.Runtime.InteropServices.FieldOffset(12)>
Public c As Char
<System.Runtime.InteropServices.FieldOffset(14)>
Public b As Byte
End Structure
A két egész szám mező, i1 és i2, ugyanazokat a memóriahelyeket használja, mint lg. A struktúraelrendezés ilyen típusú szabályozása a platformhívások használatakor hasznos.