Megosztás a következőn keresztül:


Útmutató: C/C++ unió létrehozása attribútumok használatával (Visual Basic)

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.

Lásd még