MSDN 解释:
offsetof
Retrieves the offset of a member from the beginning of its parent structure.
size_t offsetof( structName, memberName );
Routine | Required Header | Compatibility |
offsetof | <stddef.h> | ANSI, Win 95, Win NT |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
LIBC.LIB | Single thread static library, retail version |
LIBCMT.LIB | Multithread static library, retail version |
MSVCRT.LIB | Import library for MSVCRT.DLL, retail version |
Return Value
offsetof returns the offset in bytes of the specified member from the beginning of its parent data structure. It is undefined for bit fields.
Parameters
structName
Name of the parent data structure
memberName
Name of the member in the parent data structure for which to determine the offset
Remarks
The offsetof macro returns the offset in bytes of memberName from the beginning of the structure specified by structName. You can specify types with the struct keyword.
Note offsetof is not a function and cannot be described using a C prototype.
PS:这个是在VS2008 stddef.h头文件中的宏定义,是用来计算成员的偏移量的
#define offsetof(s,m) (size_t)&reinterpret_cast<const volatile char&>((((s *)0)->m))
想获取一个成员变量在结构体中的偏移量, 因为NULL为零, 所以这样取地址得到的就是下个变量在结构体内的偏移位置.
所以这个宏一般是用来计算一个偏移长度的.
例子: