OffsetOf

Returns the offset of a field within a type.

Syntax
   #define OffsetOf(typename, fieldname) CInt( @Cast( typename Ptr, 0 )->
   fieldname )	

Usage
   result = OffsetOf( typename, fieldname )

Parameters
   typename
      Name of the type as defined using the Type...End Type statements.
   fieldname
      Name of the field as defined within the type (or within the base 
      types for a derived type).

Description
   For a non-derived type, OffsetOf will return the location fieldname as 
   offset in bytes from the beginning of typename.

   For a derived type, OffsetOf will return the location fieldname as 
   offset in bytes from the beginning of its highest base type.
   Note: if a member of the base type is overridden by a new member, the 
   offset of the old member cannot be accessed from the derived type.

Example
   Type MyType
     x As Single
     y As Single
     Union
      b As Byte
      i As Integer
     End Union
   End Type

   Print "OffsetOf x = "; OffsetOf(MyType, x)
   Print "OffsetOf y = "; OffsetOf(MyType, y)
   Print "OffsetOf b = "; OffsetOf(MyType, b)
   Print "OffsetOf i = "; OffsetOf(MyType, i)

Output
   OffsetOf x =  0
   OffsetOf y =  4
   OffsetOf b =  8
   OffsetOf i =  8

Dialect Differences
   * Not available in the -lang qb dialect unless referenced with the 
     alias __Offsetof.

Differences from QB
   * New to FreeBASIC

See also
   * Type...End Type
   * SizeOf

