OffsetOf
 
Возвращает смещение поля внутри типа.

Синтаксис

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

Использование

result = OffsetOf( typename, fieldname )

Параметры

typename
Имя типа , определяемого с помощью заявления Type...End Type.
fieldname
Имя поля, определенного в типе (или в рамках базового типа для производного типа).

Описание

Для не производного типа, OffsetOf возвращает расположение fieldname как смещение в байтах от начала typename.

Для производного типа, OffsetOf возвращает расположение fieldname как смещение в байтах от начала его базового типа.
Примечание: Если новый элемент переопределяется элементом базового типа, смещение старого элемента нельзя получить от производного типа.

Пример

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)


Вывод
OffsetOf x =  0
OffsetOf y =  4
OffsetOf b =  8
OffsetOf i =  8


Различия диалектов

  • Не доступно в диалекте -lang qb , но есть псевдоним __Offsetof.

Отличия от QB

  • Новое в FreeBASIC

См. также