#include <stdio.h>
#define OFFSET(x, y) &((x *)0)->y
struct TestStruct {
int mVar1;
int mVar2;
int mVar3;
};
void OffsetTestStruct()
{
fprintf(stderr, "sizeof(struct TestStruct) %d\n", sizeof(struct TestStruct));
fprintf(stderr, "-- mVar1 offset : %d\n", OFFSET(TestStruct, mVar1));
fprintf(stderr, "-- mVar2 offset : %d\n", OFFSET(TestStruct, mVar2));
fprintf(stderr, "-- mVar3 offset : %d\n", OFFSET(TestStruct, mVar3));
}
struct TestStruct2 {
int mVar1;
long long mVar2;
int mVar3;
};
void OffsetTestStruct2()
{
fprintf(stderr, "sizeof(struct TestStruct2) %d\n", sizeof(struct TestStruct2));
fprintf(stderr, "-- mVar1 offset : %d\n", OFFSET(TestStruct2, mVar1));
fprintf(stderr, "-- mVar2 offset : %d\n", OFFSET(TestStruct2, mVar2));
fprintf(stderr, "-- mVar3 offset : %d\n", OFFSET(TestStruct2, mVar3));
}
打印结构体偏移
最新推荐文章于 2022-05-27 17:28:21 发布