技术小站8

网站首页 产经 > 正文

a third dimension

2023-01-04 07:30:59 产经 来源:
导读 大家好,小豆豆来为大家解答以上的问题。a third dimension这个很多人还不知道,现在让我们一起来看看吧!1、TAILQ_FOREACH和TAILQ_FIRST的

大家好,小豆豆来为大家解答以上的问题。a third dimension这个很多人还不知道,现在让我们一起来看看吧!

1、TAILQ_FOREACH和TAILQ_FIRST的实现代码略。

2、详细的看下面的附录中的代码,比较简单 TAILQ_LAST的作用是计算出队列最后一个元素的地址,它的实现就有点难懂了,用到了TAILQ_ENTRY和TAILQ_HEAD内存布局一样的知识点:#define TAILQ_LAST(head,headname) (*(((struct headname *)((head)->tqh_last))->tqh_last)) 队列中的tqh_last字段的值是队列最后一个元素的tqe_next的地址,不是最后一个元素的地址。

3、怎么计算出最后一个元素的地址呢? (structheadname *)(head)->tqh_last获得最后一个元素的tqe_next的地址,并强制转换成队列指针类型,再对其用->tqh_last 就相当于获得了最后一个元素的tqe_prev地址(因为TAILQ_ENTRY和TAILQ_HEAD内存布局一样),然后解引用就得到了最后一个元素 的地址。

4、很巧妙! 其它接口的实现请看queue.h文件,略。

5、有了上面的知识,就很简单了。

6、TAILQ_FOREACH和TAILQ_FIRST的实现代码略。

7、TAILQ_LAST的作用是计算出队列最后一个元素的地址,它的实现就有点难懂了,用到了TAILQ_ENTRY和TAILQ_HEAD内存布局一样的知识点:#define TAILQ_LAST(head,headname)  (*(((struct headname *)((head)->tqh_last))->tqh_last))           队列中的tqh_last字段的值是队列最后一个元素的tqe_next的地址,不是最后一个元素的地址。

8、怎么计算出最后一个元素的地址呢? (structheadname *)(head)->tqh_last获得最后一个元素的tqe_next的地址,并强制转换成队列指针类型,再对其用->tqh_last 就相当于获得了最后一个元素的tqe_prev地址(因为TAILQ_ENTRY和TAILQ_HEAD内存布局一样),然后解引用就得到了最后一个元素 的地址。

9、很巧妙!已发99xxb就是你想要的88xxb我知道一个2019年才出来的记好咯其他的都不对吧# ss22s还能行的#。

本文到此分享完毕,希望对大家有所帮助。


版权说明: 本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。


标签:




热点推荐
热评文章
随机文章