zo总结遇到的比较有意思的宏。
offsetof(s,m),在c里面是一个宏,在C++里有对应的函数。
宏的原型:
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
宏的功能:
返回结构体成员MEMBER在结构体TYPE中的偏移量。将0强制转换为一个地址为0的结构体指针变量,编译器返回结构体中相应成员的地址,而该地址相对于为0的结构体首地址自然就是偏移量地址了。由于编译器特性实际没有访问这个空指针中的任何成员,因此也不会出现内存错误。
原文:https://www.cnblogs.com/chen1993/p/13202811.html