笔记——1
来源:互联网 发布:软件开发合同收费模式 编辑:程序博客网 时间:2024/06/12 01:04
-----------------------------------------
1.container_of(ptr, type, member)
(
{
const typeof (((struct i2c_adapter *)0)->dev) *__mptr = d; // typeof这个关键字还是第一次看到,搜索下发现,typeof就是将其包含的
对象的类型给提出来,针对此例,则表示将(((struct i2c_adapter *)0)->dev)的类型提出来,这个类型便是struct device类型,所以此行的作用是声明一个
(struct device *)类型的变量,同时给它赋值为d。结果语句为:struct device * __mptr = d;
(struct i2c_adapter *)((char *)__mptr - ((size_t) &((struct i2c_adapter *)0)->dev);
// 开始有一个强制转换类型,接着是一个运算,运算中首先是将__mptr强制转换成(char *)类型,即指向char的一个指针(地址)
// 接着是一个表达式,首先分析下((struct i2c_adapter *)0)->dev),此句表示将0地址强制转换成指向类型为struct i2c_adapter的指针(地址),然后得到该结构体中成员dev变量,最后加了一个&符号,表示取地址,就是dev相对于0地址的偏移地址。
// 最后又两个表达式之间进行减运算,这个运算就相当于将__mptr地址向前移动了"dev相对于0地址的偏移地址"那么多,实际操作也是这样。
}
)
-------------------------------------------
2.大小端
大端:高地址存放低字节,低地址存放高字节。就类似将一个16进制的数按字符串的形式存放,例如0x1122,首地址指向的是0x11,即低地址指向了高字节。
小端:高地址存放高字节,低地址存放低字节。例如0x1122,首地址指向的是0x22,即低地址指向低字节。
-------------------------------------------
1.container_of(ptr, type, member)
(
{
const typeof (((struct i2c_adapter *)0)->dev) *__mptr = d; // typeof这个关键字还是第一次看到,搜索下发现,typeof就是将其包含的
对象的类型给提出来,针对此例,则表示将(((struct i2c_adapter *)0)->dev)的类型提出来,这个类型便是struct device类型,所以此行的作用是声明一个
(struct device *)类型的变量,同时给它赋值为d。结果语句为:struct device * __mptr = d;
(struct i2c_adapter *)((char *)__mptr - ((size_t) &((struct i2c_adapter *)0)->dev);
// 开始有一个强制转换类型,接着是一个运算,运算中首先是将__mptr强制转换成(char *)类型,即指向char的一个指针(地址)
// 接着是一个表达式,首先分析下((struct i2c_adapter *)0)->dev),此句表示将0地址强制转换成指向类型为struct i2c_adapter的指针(地址),然后得到该结构体中成员dev变量,最后加了一个&符号,表示取地址,就是dev相对于0地址的偏移地址。
// 最后又两个表达式之间进行减运算,这个运算就相当于将__mptr地址向前移动了"dev相对于0地址的偏移地址"那么多,实际操作也是这样。
}
)
-------------------------------------------
2.大小端
大端:高地址存放低字节,低地址存放高字节。就类似将一个16进制的数按字符串的形式存放,例如0x1122,首地址指向的是0x11,即低地址指向了高字节。
小端:高地址存放高字节,低地址存放低字节。例如0x1122,首地址指向的是0x22,即低地址指向低字节。
-------------------------------------------
0 0
- 【笔记】Python学习笔记 ——1
- 笔记——1
- Android 笔记—1
- NT_iOS笔记—Git笔记
- 素数笔记——1
- 平时笔记——1
- Java笔记——1
- JavaScript——笔记1
- Web开发学习笔记1——PHP学习笔记
- android学习笔记11(1)——Fragment学习笔记
- 1—3章笔记
- C51笔记(1)—基本概念
- 云风—开发笔记(1)
- 笔记系列—数据结构1
- yii笔记—数据库1
- DataWarehouseBasedOnSQLHadoop—学习笔记[1]
- 学习笔记—HTML(1)
- 学习笔记—angular(1)
- 网页浏览控件WebView和显示进度的对话框ProgressDialog
- opencv中测量运行时间的函数
- 观察者模式
- python文件操作示例
- 应用oracle job进行定时统计信息更新
- 笔记——1
- js demo
- SQL Server char nchar varchar2 nvarchar2 区别
- Android模拟器 SD卡的权限详解
- JS 文本输入框放大镜效果
- Android Build及相关类
- Jetty实战之 安装 运行 部署
- 容易被忽略CSS特性
- Restful application based on Cherrypy