0 作用

计算结构体中某个成员的地址偏移量。

1 路径

/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h

/* Offset of member MEMBER in a struct of type TYPE. */
/* TYPE 类型结构中成员 MEMBER 的偏移量。 */
#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)

2 示例

#include <stddef.h>
#include <stdio.h>

typedef struct {
    unsigned char Member1;
    int Member2;
    long Member3;
} TypeA;

typedef struct {
    unsigned char Member1;
    int Member2;
    long Member3;
} __attribute__((packed)) TypeB;

int main(void)
{
    printf("%ld\n", offsetof(TypeA, Member2));
    printf("%ld\n", offsetof(TypeB, Member2));

	return 0;
}

3 输出

4
1
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐