场景:
1. C结构体里计算结构体的偏移量平常看来没什么必要,但是放到插件结构的设计里就有必要了,比如只能使用偏移量访问的场景,而不能使用引用成员变量的场景。
2. 在设计一致性的接口时,公用的接口不怎么变化的,但是插件模块的结构可以不需要根据统一结构来设计,他们只需要提供偏移量给公用接口调用就行了,
不同的插件可能偏移量不一致,因为他们可以独立实现。公用接口就可以通过偏移量来访问不同的变量。
3. 可以使用stddef.h文件里的 offsetof...
分类:
编程语言 时间:
2015-05-31 21:44:31
阅读次数:
199
malloc.c:3096: sYSMALLOc: Assertion (old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) ...
分类:
其他好文 时间:
2015-05-21 10:57:00
阅读次数:
516
stddef.h头文件看意思就是标准定义,定义有一些变量和宏。其中定义了NULL和offsetof()宏,NULL指向0或者是无效指针,offsetof获取一个元素在结构中的偏移量。下面看看具体的代码注释和笔记。#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H#include /*
* #undef 预定义取消指令...
分类:
其他好文 时间:
2015-04-09 19:57:15
阅读次数:
106
目录目录
简介
单向链表
双向链表
环形链表
Linux内核中的链表实现
offsetof
container_of
container_of 第一部分
container_of 第二部分
链表初始化
向链表中增加一个节点
删除节点
移动节点
判断链表是否为空
遍历链表
Demo测试
tlisth
mlistc
执行结果简介最近在学习Android Binder驱动程序实现的时候,发现里面的数据结构...
分类:
系统相关 时间:
2015-03-17 23:49:03
阅读次数:
662
#include#defineoffsetof(TYPE,m) (size_t)&reinterpret_cast((((TYPE*)0)->m))宏功能:获得一个结构体变量成员在此结构体中的偏移量。通过获取偏移量取得结构体的地址/* Takes a pointer to a member vari...
分类:
其他好文 时间:
2014-11-16 12:00:36
阅读次数:
212
被人问到这个问题,各种解决。google一下,MFC中有一个OFFSET宏,就有这个功能。写一下:#define offsetof(structure, member) ((int)(&((structure *)0)->member))eg:#include using namespace std...
分类:
其他好文 时间:
2014-10-15 19:12:41
阅读次数:
159
offsetof是求类的成员变量的偏移量,如果成员变量是类定义的第一个变量,那他的偏移量应该是0.但是引入继承之后,就要额外考虑了。下面的代码说明了这个问题:#define AFX_NOVTABLE//#define AFX_NOVTABLE __declspec(novtable)class AF...
分类:
其他好文 时间:
2014-08-14 19:40:09
阅读次数:
290
最近在看nginx源码,看到定时器的时候,发现一个结构体利用偏移量求值问题,结构体相信做c开发的都遇到过,那么不知你对结构体中成员变量偏移这块是如何理解的;首先我们先看一下nginx中的那个让我迷惑的地方ev = (event_t*)((char*)node - offsetof(event_t,....
分类:
编程语言 时间:
2014-07-03 10:46:15
阅读次数:
234
1)#define offsetof(s, m)(size_t)&(((s *)0)->m)2)#define OBJECT_HEAD_ADDRESS(ClassName,MemberName,Addre) \Addre - offsetof(ClassName, MemberName)
分类:
编程语言 时间:
2014-06-27 18:13:44
阅读次数:
213
linux中的经典宏定义 offsetof
定义:offsetof在linux内核的include/linux/stddef.h中定义。 #define offsetof(TYPE, MEMBER)
((size_t) &((TYPE *)0)->MEMBER)说明:获得结构体(TYPE)的变量成员...
分类:
系统相关 时间:
2014-05-18 01:30:21
阅读次数:
515