Postupy: Vytvoření sjednocení C/C++ pomocí atributů (Visual Basic)
Pomocí atributů můžete přizpůsobit způsob, jakým jsou struktury rozloženy v paměti. Pomocí atributů můžete například vytvořit to, co se v jazyce C/C++ StructLayout(LayoutKind.Explicit)
FieldOffset
označuje jako sjednocení.
Příklad 1
V tomto segmentu kódu jsou všechna pole startu TestUnion
ve stejném umístění v paměti.
' 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
Příklad 2
Následuje další příklad, kde pole začínají na různých explicitně nastavených umístěních.
' 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
Dvě celočíselná pole i1
a i2
sdílejí stejná umístění paměti jako lg
. Tento druh kontroly nad rozložením struktury je užitečný při použití volání platformy.
Viz také
Spolupracujte s námi na GitHubu
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.