stddef.h中有如下宏:
#ifdef _WIN64
#define offsetof(s,m) (size_t)( (ptrdiff_t)&( ( (s *)0 )->m ) )
#else
#define offsetof(s,m) (size_t)&( ( (s *) 0 )->m )
#endif
解释:
宏里面的 & 取的成员地址是相对与 s 的相对地址
用 size_t 把返回值 转化为了 十进制,否则 返回值类似于:12345678 为8位的16进制数(这也是地址值的正常表示法(32位地址,4个字节)
本文解析了stddef.h中的offsetof宏,详细介绍了其工作原理及如何获取结构体成员相对于结构体起始位置的偏移量。该宏在32位和64位系统中有所不同,并通过类型转换确保返回值为十进制形式。
4937

被折叠的 条评论
为什么被折叠?



