• <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://www.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)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: XXXXXHD亚洲日本HD| 在国产线视频A在线视频| 韩国一级毛片中文字幕| 亚洲一区二区日韩综合久久| 国产午夜精品理论大片| 亚洲成人精品| 亚洲AV无码综合一区二区在线| 五月天国产成人av免费观看| 国产视频不卡一区二区三区 | 精品无码人妻| 亚洲综合久久国产一区二区| 国产偷自视频区视频| 99精品国产兔费观看久久99 | 97国产精品人人爽人人做| 亚洲熟妇精品一区二区| 亚洲欧美丝袜精品久久| 国产亚洲AV电影院之毛片| 办公室强奷漂亮少妇视频| 韩国精品一区二区三区| 国产精品中文字幕在线看| 白嫩少妇无套内谢视频| 亚洲av激情综合在线| 免费爆乳精品一区二区| 久久麻豆成人精品| 最新国产精品中文字幕| 日韩精品无码免费专区网站| 99午夜精品亚洲一区二区| 欧美成人看片黄A免费看| 韩国理伦片年轻邻居2| 青草热在线观看精品视频| 午夜精品久久久久久久久| 亚洲婷婷综合色高清在线| 亚洲人成在久久综合网站| 亚洲AV无码综合一区二区在线| 四虎亚洲精品高清在线观看| 人妻丝袜无码专区视频网站| 丁香五月婷激情综合第九色| 亚洲人妻精品中文字幕| 人妻无码中文字幕| 99久久精品午夜一区二区| 五月婷婷深开心五月天|