offsetof、container_of 实现
2015-09-08 16:20
387 查看
#include<stdio.h> #include<string.h> #define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER) #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) #define pppp ({ pp = 5; pp -3 ;}) struct data{ int a; char b; char c[10]; }; #define test struct data int main() { struct data loc; int pp = 4; loc.a = 3; char dd[10] = "baibin"; strcpy(loc.c,dd); struct data *pdata ; pdata = container_of(&(loc.b),struct data,b); printf("a=%d, c=%s",pdata->a,pdata->c); pp = ( {pp= 5; pp-2;}); printf("\n%d\n",pp); return 0; }
相关文章推荐
- Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536
- 原型:char *strrchr(const char *str, char c); http://blog.csdn.net/hgj125073/article/details/8443912
- expect中的close,wait,exit,return
- ASMCMD fails to start on module libnnz10.so, permission denied
- 行为型模式:责任链模式(Chain of Responsibility Pattern)
- CMAKE_GENERATOR_TOOLSET and CMAKE_TOOLCHAIN_FILE
- 解决airserver在Windows下安装失败的问题
- http://elinux.org/Main_Page
- [YARN] 2.2 GB of 2.1 GB virtual memory used. Killing container.
- STL map,vector和pair的混合应用
- FOXMAIL无法响应
- LeetCode 219. Contains Duplicate II
- Customizing AIX Prompt
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
- tail命令和head命令查询文件指定行数
- 使用UltraISO制作U盘启动盘
- Liunx 下装openoffice 乱码解决__http://wenku.baidu.com/link?url=3uaBXBwPt_ewQSZEV1vnyhaFrB8Pf7Z-VYJDGLnFvUM
- win8配置最新版flashdevelop v2和 sdk4.6+air18 配置系统未能初始化flashplayer等 解决配置方案
- 【Django】 发邮件 email
- git clone操作出现fatal:index-pack failed错误解决方案