可以使用std标准函数 offsetof(),在stddef.h头文件中,实现原理如下(模拟系统的实现):
#define MY_STRUCT_OFFSET(s, m) ((size_t)(& ((s*)0)->m ))
原理如下:
1、0即空指针转换结构体空指针。
2、拿结构体中的指定成员的地址即为我们要找的偏移,因为首地址为空,因此成员地址相对0来说即为相对偏移。
c/c++取结构体指定成员的偏移,及原理解析
来源:清泛原创 2020-10-30 13:50:18 人气: 我有话说( 0 人参与)
可以使用std标准函数 offsetof(),在stddef h头文件中,实现原理如下(模拟系统的实现): define MY_STRUCT_OFFSET(s, m) ((size_t)(& ((s*)0)->m ))原理如下:1、0即空指
可以使用std标准函数 offsetof(),在stddef.h头文件中,实现原理如下(模拟系统的实现):
#define MY_STRUCT_OFFSET(s, m) ((size_t)(& ((s*)0)->m ))
原理如下:
1、0即空指针转换结构体空指针。
2、拿结构体中的指定成员的地址即为我们要找的偏移,因为首地址为空,因此成员地址相对0来说即为相对偏移。
上一篇:/usr/lib64/gcc/ ... /bin/ld: cannot find -lxxx 踩坑记录
下一篇:[since C++11] std::array的使用