FIELD

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » F » FIELD

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

FIELD wird zusammen mit TYPE und UNION 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.

FIELD hat nur eine Auswirkung, wenn im UDT Records verwendet werden, die mindestens die angegebene Größe besitzen. Ansonsten wird auf ein Vielfaches des größten Record-Datentyps ausgeweitet. Wird FIELD ausgelassen, verwendet FreeBASIC unter Linux und DOS den Wert 4 und unter Windows den Wert 8.

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

' Im Folgenden hat FIELD keinen Effekt
Type ShortType Field = 4
  s1 As Short
  s2 As Short
  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)
Print "Ohne Integer: " & SizeOf( ShortType)
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
Ohne Integer: 6

Unterschiede zu QB:

Plattformbedingte Unterschiede:

Unterschiede unter den FB-Dialektformen:
Das Standardpadding in -lang fb und -lang fblite hängt von der Plattform ab, während in -lang qb kein Padding durchgeführt wird.

Siehe auch:
TYPE (UDT), Datentypen und Deklarationen