必威体育Betway必威体育官网
当前位置:首页 > IT技术

关于offsetof(s,m)的解析

时间:2019-10-17 00:42:19来源:IT技术作者:seo实验室小编阅读:88次「手机版」
 

offsetof

关于offsetof(s,m)的解析

在一些库的写法中,我们有时会看到如下的宏定义:

#define OFFSETOF(s,m) ((INT32U)&(((s *)0->m))

其作用其实是结构体s中的成员m,相对于结构体s首地址的偏移量。如下,我们对其进行分布的解析以便理解

struct s
{
	float a;
	char b;
	int m;
	……
}

假设有结构体类型s,s中包含了成员m;则

  • (s *)0:表示将0转化为指向"s"这个结构体类型的指针;可以理解为一个起始地址为0的"s"类型变量
  • ((s *)0)->m:表示这个起始地址为0的"s"类型变量中的成员"m";
  • &(((s *)0)->m):表示取这个成员"m"的地址
  • ((INT32U)&(((s *)0->m)):将"m"成员的地址以整型数据类型强制输出

因为这个"s"类型的结构体变量起始地址为0,则最后一步输出的成员"m"的地址,即为其在结构体里面的偏移量了。综上,我们便可以通过这样的一个宏定义去求某个结构体的特定成员在结构体里面的偏移量了。

相关阅读

吐槽GitHub上刚放出来的阿里AliOS物联网操作系统,顺便

origiin: http://bbs.armfly.com/read.php?tid=47258GitHub:https://github.com/alibaba/AliOS-Things 本帖仅代表个人观点,仅仅如

[rhel6.5]ISCSI配置过程详解

关于数据存储的几种方式 1.DAS:表示直接访问存储,例如本机上面的磁盘 2.SAN:存储区域网,来自局域网里面其他存储设备提供的磁盘;

WebTours环境搭建

1、下载strawberry-perl 下载地址如下: http://strawberryperl.com/ 2、安装strawberry-perl 双击安装包,勾选同意协议,点击 insta

Mex

链接:HTTPS://AC.NOWCODER.COM/ACM/CONTEST/700/J来源:牛客网题目描述RECENTLY MINIEYE’S ENGINEER M IS WORKING ON NEURAL NETWO

localStorge本地存储-更新中....

###LocalStorge文档查看在H5中,由于提供了相应的web客户端存储数据的方法,所以不用利用传统的追踪cookie的方法,实现更加高效,简单。

分享到:

栏目导航

推荐阅读

热门阅读