C 库宏 offsetof(type, member-designator) 会生成一个类型为 size_t 的整型常量,
它是一个结构成员相对于结构开头的字节偏移量。
成员是由 member-designator 给定的,结构的名称是在 type 中给定的。
- type -- 这是一个 class 类型,其中,member-designator 是一个有效的成员指示器。
- member-designator -- 这是一个 class 类型的成员指示器。
#include <stddef.h> #include <stdio.h> struct address{ char name[50]; char street[50]; int phone; }; int main(){ printf("in struct address, name offset %ld bytes ", offsetof(struct address, name)); printf("in struct address, street offset %ld bytes ", offsetof(struct address, street)); printf("in struct address, phone offset %ld bytes ", offsetof(struct address, phone)); return 0; }
result:
./a.out in struct address, name offset 0 bytes in struct address, street offset 50 bytes in struct address, phone offset 100 bytes