结构成员的C / C ++偏移量

时间:2016-08-09 11:31:01

标签: c++ c struct casting

我一直在寻找来源,我发现了一个像这样定义的宏:

#define STRUCT_OFFSET(tp, member) \
   ((off_t) (((char*)&((tp*)0)->member)-(char*)0))

我查找了off_t,它只是long的typedef,所以它是指针变量的基本长度。但这次转换是什么? ((char*)&((tp*)0)

这甚至意味着什么意思,为什么有零?此部分甚至如何解决(char*)0,将指针(NULL)转换为零(NULL)?假设如果我没有宏,我就不能像int offset = &MyStruct::some_member;那样做一些没有宏的可能吗?

0 个答案:

没有答案