FIELD

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » F » FIELD

Syntax: TYPE UDTName FIELD = { 1 | 2 | 4 }
Typ: Schlüsselwort
Kategorie: Speicherorganisation

FIELD wird zusammen mit TYPE verwendet und legt dort das Padding-Verhalten fest. Dieses bestimmt, dass UDTs auf eine bestimmte Länge "ausgedehnt" werden sollen. Der Zweck liegt darin, dass auf solche ausgedehnten Felder z. T. schneller zugegriffen werden kann. Das Feld wird dabei so ausgedehnt, dass die Anzahl der Bytes, die das Feld im Speicher benötigt, ein ganzzahliges Vielfaches von 1, 2 oder 4 ist. Da FreeBASIC ein 32bit-Compiler ist, wird standardmäßig die Feldbreite 4 verwendet, da 32bit 4 Byte entsprechen.

Beispiel:

Type NormalPacked
   i As Integer
   b As Byte
End Type

Type BytePacked Field = 1
   i As Integer
   b As Byte
End Type

Type WordPacked Field = 2
   i As Integer
   b As Byte
End Type

Type DWordPacked Field = 4
   i As Integer
   b As Byte
End Type

Print "Groesse der einzelnen Datentypen"
Print "Integer    : " & SizeOf(     Integer)
Print "Byte       : " & SizeOf(        Byte)
Print

Print "Groesse der verschiedenen UDTs"
Print "Ohne Field : " & SizeOf(NormalPacked)
Print "Field = 1  : " & SizeOf(  BytePacked)
Print "Field = 2  : " & SizeOf(  WordPacked)
Print "Field = 4  : " & SizeOf( DWordPacked)
Sleep

Ausgabe:

Groesse der einzelnen Datentypen
Integer    : 4
Byte       : 1

Groesse der verschiedenen UDTs
Ohne Field : 8
Field = 1  : 5
Field = 2  : 6
Field = 4  : 8

Unterschiede zu QB: