OFFSETOF

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » O » OFFSETOF

Syntax: OFFSETOF( TypeName, RecordName )
Typ: Funktion
Kategorie: Speicherverwaltung

OFFSETOF gibt den Offset (Abstand in Byte zur Adresse des TYPEs) eines Records innerhalb eines TYPEs relativ zu seinem Anfang zurück.

Beispiel:

TYPE MyType
  x AS SINGLE
  y AS SINGLE
  UNION
    b AS BYTE
    i AS INTEGER
  END UNION
END TYPE

PRINT "Offset von x = "; OFFSETOF(MyType, x)
PRINT "Offset von y = "; OFFSETOF(MyType, y)
PRINT "Offset von b = "; OFFSETOF(MyType, b)
PRINT "Offset von i = "; OFFSETOF(MyType, i)


Ausgabe:

Offset von x =  0
Offset von y =  4
Offset von b =  8
Offset von i =  8

Interne Darstellung:

#Define OFFSETOF(type_,field_) CInt( @Cast( type_ ptr, 0 )->field_ )

Unterschiede zu QB: Neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:
Die Version __OFFSETOF in der Dialektform -lang qb existiert erst seit FreeBASIC v0.24.

Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht OFFSETOF nicht zur Verfügung und kann nur über __OFFSETOF aufgerufen werden.

Siehe auch:
TYPE, SIZEOF, VARPTR