Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - FIELD

Referenz-Navigation

 

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

FIELD wird zusammen mit BefehlsreferenzeintragTYPE und BefehlsreferenzeintragUNION 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, je nach Betriebssystem, den Wert 4 oder den Wert 8.

Abhängig von der Größe des größten Record-Datentyps verwendet FreeBASIC also

Beispiel:

Type NormalPacked
  i As Long
  b As Byte
End Type

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

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

Type DWordPacked Field = 4
  i As Long
  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 "Long        : " & SizeOf(Long)
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 Long   : " & SizeOf(   ShortType)
Sleep

Ausgabe:

Groesse der einzelnen Datentypen
Long        : 4
Byte        : 1

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

Unterschiede zu QB:

Plattformbedingte Unterschiede:

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

Siehe auch:
BefehlsreferenzeintragTYPE (UDT), BefehlsreferenzeintragDatentypen und Deklarationen


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 24.07.2007 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 03.04.2015 von Redakteurnemored gespeichert.
  Versionen Versionen