Solaris 动态跟踪指南

成员大小和偏移

通过 sizeof 运算符,可以确定包括结构或联合在内的任何 D 类型或表达式的大小(以字节为单位)。sizeof 运算符可应用于表达式或由括号括住的类型名称,如以下两个示例所示:

sizeof expression				sizeof (type-name)

例如,如果将表达式 sizeof (uint64_t)sizeof (callinfo.ts) 插入以上示例程序的源代码中,二者都将返回值 8。sizeof 运算符的正式返回类型为类型别名 size_t,后者被定义为一个大小与当前数据模型中的指针相同的无符号整数,用于表示字节计数。如果将 sizeof 运算符应用于表达式,D 编译器将会验证该表达式,但是,生成的对象大小在编译时进行计算,并且不会生成表达式代码。您可以在需要整型常数的任何位置使用 sizeof

您可以使用配套运算符 offsetof,来确定结构或联合成员相对于与结构或联合类型的任何变量关联的存储区起始位置的偏移量(以字节为单位)。offsetof 运算符用于以下格式的运算符:

offsetof (type-name, member-name)

其中,type-name 是任何结构或联合类型的名称或类型别名,member-name 是命名该结构或联合的成员的标识符。offsetofsizeof 类似,也返回 size_t,并且可在 D 程序中可使用整型常数的任何位置使用。