求结构体某个变量的相对偏移量
来源:互联网 发布:发票数据怎么导出电子 编辑:程序博客网 时间:2024/05/01 22:34
/* 结构体某个变量的相对偏移量 */
#define GET_OFFSET_OF_M_IN_STRUCT(__STRUCT, __m) (size_t)&(((__STRUCT*)0)->__m)
(__STRUCT*)0//表示将常量0强制转化为__STRUCT*型指针所指向的地址, 当然也可以是x,只是到最后还要减去这个x的值
((__STRUCT*)0)->__m//表示在0地址处的结构体__STRUCT的成员__m
&(((__STRUCT*)0)->__m)//表示取结构体指针(__STRUCT*)0的成员__m的地址,因为该结构体的首地址为0,所以其实就是得到了__m距离结构体首地址的偏移量.
(size_t)//是一种数据类型,为了便于不同系统之间移植而定义的一种无符号型数据,一般为unsigned int
//扩展一下,现在知道这个变量的地址,求结构体的首地址
#define GET_STRUCT_ADDR_BY_M(__STRUCT, __pm, __m)((int)__pm - (int)(&(((__STRUCT*)0)->__m)))
{
u8 ucManuFactory;
u8 ucGroup;
u8 ucId;
u8 aucServerSite[SERVER_SITE_NAME_LEN]; /* 服务器网址 or IP */
u16 usServerPort; /* 服务器端口号 */
} INFO_T;
INFO_T stInfo;
u16 usOffset = 0;
u32 uiAddr = 0;
u8 *pucAddr = &stInfo.usServerPort;
usOffset = GET_OFFSET_OF_M_IN_STRUCT(CRANE_FACTORY_INFO_T, ucId);
usOffset = GET_OFFSET_OF_M_IN_STRUCT(CRANE_FACTORY_INFO_T, usServerPort);
uiAddr = GET_STRUCT_ADDR_BY_M(CRANE_FACTORY_INFO_T, pucAddr, usServerPort);
- 求结构体某个变量的相对偏移量
- 求结构体某个变量的相对偏移量
- 求一个结构体A里某个变量相对A的偏移量
- 宏定义求结构体某个变量相对其偏移量的问题
- 用一个宏求结构体某个变量的相对偏移量
- 用一个宏求结构体某个变量的相对偏移量
- 用一个宏求结构体某个变量的相对偏移量
- 用一个宏定义OFFSET求一个结构体里某个变量相对结构体的偏移量
- 用一个宏定义FIND求一个结构体struc里某个变量相对struc的偏移量
- 结构体A里某个变量相对A的偏移量
- 用宏定义FIND求一个结构体里某个变量相对于sturct的偏移量
- 求一个结构体A里某个变量相对于A的偏移量
- 指针用法之一:给定结构体求某变量的偏移量,给出某变量偏移量求结构体首地址
- 定义一个宏获取结构体中变量相对结构体开始的偏移量
- 求结构体成员的偏移量
- 求结构体元素的偏移量
- 求结构体的偏移量方法
- 获取鼠标相对某个div的偏移量
- sql2005中的时间格式化
- 提高前端性能方面的处理以及不足
- 黑马程序员_多线程
- BSP 之Bootloader开发(1)
- linux 进程优先级设置
- 求结构体某个变量的相对偏移量
- BSP 之Bootloader开发(2)
- iOS设计模式(02):单例模式
- boost::asio 实现的FTP客户端
- A Simple Makefile Tutorial
- 高效程序员的 7 个共同特征
- BSP之BOOTLOADER 开发(3)
- 推荐一款界面原型设计工具-axure
- 教你1分钟学会傻瓜式的GitHub项目托管