OffsetOf
 
返回类型中字段的偏移量。

语法

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

用法

result = OffsetOf( typename , fieldname )

参数

typename
使用Type...End Type语句定义的类型名称。
fieldname
在类型中定义的字段的名称(或派生类型的基本类型内)。

说明

对于非派生类型,OffsetOf将从typename 开始返回位置fieldname 的偏移量(以字节为单位)。

对于派生类型,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 "偏移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

参考