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`