Skip to content

OFFSETOF


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

语法

#define Offsetof(typename, fieldname) cint( @cast( typename ptr, 0 )->fieldname )

用法

result = Offsetof( typename, fieldname )

参数

typename

使用 Type...End Type 语句定义的类型名称。

fieldname

在类型中定义的字段名称(或在派生类型的基类型中定义的字段名称)。

描述

对于非派生类型,Offsetof 将返回 fieldnametypename 开头起的字节偏移量位置。

对于派生类型,Offsetof 将返回 fieldname 从其最高基类型开头起的字节偏移量位置。

注意:如果基类型的成员被新成员覆盖,则无法从派生类型访问旧成员的偏移量。

示例

start GeSHi

vb
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)

end GeSHi

输出

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

方言差异

  • -lang qb 方言中不可用,除非通过别名 __Offsetof 引用。

与 QB 的差异

  • FreeBASIC 新增功能

参见

  • Type...End Type
  • Sizeof

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系