<cstddef>

offsetof

offsetof (type,member)
返回成员偏移量
此宏以函数形式返回结构或联合类型 type 中成员 member 的字节偏移量。

返回的值是类型为 size_t 的无符号整型值,表示指定 member 与其结构开始之间的字节数。

参数

类型
member 是一个有效成员指示符的类型。
type 应为结构或联合类型。
type 应为 POD 类(包括联合)。
type 应为 标准布局 类(包括联合)。
成员
type 的成员。

返回值

值为 size_t 类型,表示 typemember 的偏移量。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* offsetof example */
#include <stdio.h>      /* printf */
#include <stddef.h>     /* offsetof */

struct foo {
  char a;
  char b[10];
  char c;
};

int main ()
{
  printf ("offsetof(struct foo,a) is %d\n",(int)offsetof(struct foo,a));
  printf ("offsetof(struct foo,b) is %d\n",(int)offsetof(struct foo,b));
  printf ("offsetof(struct foo,c) is %d\n",(int)offsetof(struct foo,c));
  
  return 0;
}

输出
offsetof(struct foo,a) is 0
offsetof(struct foo,b) is 1
offsetof(struct foo,c) is 11


异常

无异常保证:此宏从不抛出异常:noexcept(offsetof(type,member)) 始终为 true