• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            offsetof(offsetof宏)

            更新時間:2023-03-01 13:44:59 閱讀: 評論:0

            Linxu內(nèi)核中宏container_of的作用是根據(jù)結(jié)構(gòu)體成員的一個指針地址來獲取整個結(jié)構(gòu)體的地址,要想理解container_of,我們先來看看宏offtof

            我們先來看看宏offtof

            在Linux內(nèi)核中是這樣定義的:

            #ifndef _LINUX_STDDEF_H

            #define _LINUX_STDDEF_H

            #define offtof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

            #endif

            一共4步

            1. ( (TYPE *)0 ) 將零轉(zhuǎn)型為TYPE類型指針;

            2. ((TYPE *)0)->MEMBER 訪問結(jié)構(gòu)中的數(shù)據(jù)成員;

            3. &( ( (TYPE *)0 )->MEMBER )取出數(shù)據(jù)成員的地址;

            4.(size_t)(&(((TYPE*)0)->MEMBER))結(jié)果轉(zhuǎn)換類型。巧妙之處在于將0轉(zhuǎn)換成(TYPE*),結(jié)構(gòu)以內(nèi)存空間首地址0作為起始地址,則成員地址自然為偏移地址;

            再來看看宏container_of

            在Linux內(nèi)核中是這樣定義的:

            #ifndef _LINUX_KERNEL_H

            #define _LINUX_KERNEL_H

            #include "stddef.h"

            /**

            * container_of - cast a member of a structure out to the containing structure

            * @ptr: the pointer to the member.

            * @type: the type of the container struct this is embedded in.

            * @member: the name of the member within the struct.

            *

            */

            #define container_of(ptr, type, member) ({

            const typeof( ((type *)0)->member ) *__mptr = (ptr);

            (type *)( (char *)__mptr - offtof(type,member) );})

            #endif

            其中,typeof是GNU C對標(biāo)準(zhǔn)C的擴(kuò)展,它的作用是根據(jù)變量獲取變量的類型。因此,上述代碼中的第2行的作用是首先使用typeof獲取結(jié)構(gòu)體域變量member的類型為 type,然后定義了一個type指針類型的臨時變量__mptr,并將實際結(jié)構(gòu)體變量中的域變量的指針ptr的值賦給臨時變量__mptr

            第三行代碼分為三步:

            1.(char *)__mptr轉(zhuǎn)換為字節(jié)型指針。

            2.(char *)__mptr - offtof(type,member) )用來求出結(jié)構(gòu)體起始地址(為char *型指針),

            3.然后(type *)( (char *)__mptr - offtof(type,member) )在(type *)作用下進(jìn)行將字節(jié)型的結(jié)構(gòu)體起始指針轉(zhuǎn)換為type *型的結(jié)構(gòu)體起始指針。

            本文發(fā)布于:2023-02-28 20:01:00,感謝您對本站的認(rèn)可!

            本文鏈接:http://m.newhan.cn/zhishi/a/167764949976516.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:offsetof(offsetof宏).doc

            本文 PDF 下載地址:offsetof(offsetof宏).pdf

            標(biāo)簽:offsetof
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 成人福利国产午夜AV免费不卡在线 | 青草99在线免费观看| 亚洲国产在一区二区三区| 丝袜美腿视频一区二区三区| 精品91精品91精品国产片| 美女自卫慰黄网站| 国产老头多毛Gay老年男| 亚洲乱理伦片在线观看中字| 亚洲蜜臀av乱码久久| 丰满少妇内射一区| 国产99re热这里只有精品| 国色精品卡一卡2卡3卡4卡在线 | 四虎永久在线精品无码视频| 日本东京热高清色综合| 亚洲高清国产自产拍av| 免费国产好深啊好涨好硬视频| 粉嫩av蜜臀一区二区三区| 国产自拍一区二区三区在线| 爱啪啪精品一区二区三区 | 久久精品国产亚洲夜色AV网站| 三级黄片一区二区三区| 久久成人综合亚洲精品欧美| 农村妇女高清毛片一级| 在线天堂中文新版www| 久久久久久久久毛片精品| 国产偷国产偷亚洲高清人| 亚洲人成网网址在线看| AV教师一区高清| 久久中文字幕无码一区二区| 亚洲国产高清第一第二区| 成人无码特黄特黄AV片在线| 国产成人精品午夜二三区| 久久一日本综合色鬼综合色 | 五月婷网站| 国产精品激情av在线播放| 亚洲欧美国产日韩天堂区| 亚洲欧美成人a∨观看| 久久99精品国产麻豆婷婷| 国产亚洲精品久久久999蜜臀 | 精品无码三级在线观看视频 | 国产精成人品日日拍夜夜免费|