offsetof
macro <cstddef>
offsetof (type,member)
返回成员偏移量
这个函数形式的宏返回 数据结构 或 联合类型 中成员type的字节偏移量。
返回的值是
size_t类型的无符号整型值,其字节数等于该成员和其结构体开始之间距离。
☲ 参数
type
一种类型,其中成员是有效的成员标志符。
-C : 类型应为结构或联合类型。
-C++98 : 类型应为POD类(包括联合)。
-C++11 : 类型应该是标准布局( standard-layout)类(包括联合(unions))。
member
type的成员。
☉ 返回值
size_t类型的值,type成员的偏移量。
☣ 示例
/* 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
➤ 异常
No-throw保证:此宏从不抛出异常:noexcept(offset (type,member))始终为true。