笔记——1

3 篇文章 0 订阅
2 篇文章 0 订阅
-----------------------------------------
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,即低地址指向低字节。
-------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值