#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)宏的运行机理:1. ( (TYPE *)0 ) 将零转型为TYPE类型指针; 2. ((TYPE *)0)->MEMBER 访问结构中的数据成员; 3. &( ( (TYPE ...
分类:
其他好文 时间:
2016-03-31 12:23:15
阅读次数:
329
linux和windows平台都已经定义了offsetof函数,用于取struct类型中某个变量的偏移量 在stddef.h头文件中,该宏的完整说明如下: #ifdef __cplusplus #ifdef _WIN64 #define offsetof(s,m) (size_t)( (ptrdif
分类:
其他好文 时间:
2016-01-30 22:49:44
阅读次数:
173
这是一个宏,用于计算类中某个成员的地址相对于类实例的偏移量在C++11中,要求这个类standard_layout基本用法是这样子的:#include /* printf */#include /* offsetof */struct foo { char a; c...
分类:
编程语言 时间:
2015-12-09 21:27:21
阅读次数:
551
关于结构体学习,需要了解:结构体的定义和使用、内存对齐、结构体指针、得到结构体元素的偏移量(offsetof宏实现)一、复习结构体的基本定义和使用 1 typedef struct mystruct 2 { 3 int a; 4 char b; 5 double c; 6 ...
分类:
编程语言 时间:
2015-11-09 21:00:59
阅读次数:
257
链表是内核最经典的数据结构之一,说到链表就不得不提及内核最经典(没有之一)的宏container_of。container_of似乎就是为链表而生的,它的主要作用是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针,最典型的应用就是根据链表节点获取链表上的元素对象。contai...
分类:
其他好文 时间:
2015-09-25 18:13:27
阅读次数:
163
在.NET中,对指针指向数据的存储函数都封装在marshal类中,主要的函数包括:Copy、PtrToStringUni 、PtrToStructure 、OffsetOf、WriteXXX,RreadXXX等。'使用属性告诉net编译器:结构的元素在内存中按其出现的顺序排列 _ Public S....
分类:
Web程序 时间:
2015-09-04 18:35:49
阅读次数:
151
针对linux常用的offsetof及container_of宏做详细的分析
分类:
系统相关 时间:
2015-08-05 14:43:42
阅读次数:
270
C++标准库的内容分为10类:C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5.字符串 C6.容器 C7.迭代器支持 C8.算法 C9.数值操作 C10.本地化>>> C1 与语言支持相关 定义宏NULL和offsetof,以及其他标准类型size_t和ptrdiff_t。与对应的...
分类:
其他好文 时间:
2015-07-20 14:19:05
阅读次数:
107
本文首先介绍Linux下的经典宏定义,感受极客的智慧,然后根据该经典定义为下篇博客作铺垫。
offsetof宏
定义:
// 获得结构体(TYPE)的变量成员(MEMBER)在此结构体中的偏移量。
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
说明:获得结构体(TYPE)的变量成员(MEMBER)在此结...
分类:
系统相关 时间:
2015-07-16 19:53:55
阅读次数:
144
一、C++标准库
C++标准库包括以下十类:
1)标准库中与语言支持功能相关
头文件
描 述
定义宏NULL和offsetof,以及其他标准类型size_t和ptrdiff_t。
与对应的标准C头文件的区别是,NULL是C++空指针常量的
补充定义,宏offsetof接受结构或者联合类型参数,只要他们
没...
分类:
编程语言 时间:
2015-06-15 18:44:50
阅读次数:
1028