国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于函數(shù)宏offset_of 和 container_of的學(xué)習(xí)

這篇具有很好參考價(jià)值的文章主要介紹了關(guān)于函數(shù)宏offset_of 和 container_of的學(xué)習(xí)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

#define offset_of(type, member)   ((unsigned int)&((type*)0)->member)
#define container_of(ptr, type, member)     ((type *)((char *)(ptr) - offset_of(type, member)))

offset_of(type, member)

用途: 用于獲取獲取結(jié)構(gòu)體某一個(gè)成員在該結(jié)構(gòu)體中的位置

參數(shù)1:type ,表示結(jié)構(gòu)體的類型

參數(shù)2:member? 表示結(jié)構(gòu)體成員

分析:

(unsigned int)??& (type*)0)->member? ?a.把值為0的指針強(qiáng)制轉(zhuǎn)換成該結(jié)構(gòu)體類型

                 b.通過(guò)該指針找到該成員
                ? ??c.獲取該成員相對(duì)于0 的地址偏移
                 d.強(qiáng)轉(zhuǎn)成整形
?

container_of(ptr, type, member)

用途: 知道結(jié)構(gòu)體中某一個(gè)成員的地址,需要獲取到整個(gè)結(jié)構(gòu)體的指針,通過(guò)該指針獲取其他成員變量的數(shù)據(jù)

參數(shù)1:ptr,某一個(gè)成員的地址

參數(shù)2:type? 結(jié)構(gòu)體類型

參數(shù)3:member 該成員的名字?

分析:

(type *)((char *)(ptr) - offset_of(type, member))

?                 ??a.獲取該成員相對(duì)于結(jié)構(gòu)體指針的偏移文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-748128.html

                 b.將該成員的地址轉(zhuǎn)換成char*類型,該指針指向1byte的數(shù)據(jù)
                ? ??c.轉(zhuǎn)換成結(jié)構(gòu)體類型的指針
                 d.使用該結(jié)構(gòu)體成員的指針 - 該成員相對(duì)于結(jié)構(gòu)體指針的偏移 = 結(jié)構(gòu)體指針
?
?

注意事項(xiàng):

使用gcc編譯的時(shí)候有遇到此問(wèn)題:warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
這是一個(gè)編譯器警告,指示在某一行代碼中進(jìn)行了從指針到整數(shù)的類型轉(zhuǎn)換,而且這兩者的大小不同。
?(unsigned int)??& (type*)0)->member 中,由于我是在32位單片機(jī)中使用,所以u(píng)nsigned int與地址長(zhǎng)度相同。
如果在其他不同的系統(tǒng)中需注意該指針的強(qiáng)制轉(zhuǎn)換問(wèn)題,可以使用uintptr_t來(lái)解決跨平臺(tái)的問(wèn)題。
該類型定義在c庫(kù)<stdint.h>
?

到了這里,關(guān)于關(guān)于函數(shù)宏offset_of 和 container_of的學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux第73步_學(xué)習(xí)Linux設(shè)備樹(shù)和“OF函數(shù)”

    Linux第73步_學(xué)習(xí)Linux設(shè)備樹(shù)和“OF函數(shù)”

    掌握設(shè)備樹(shù)是 Linux驅(qū)動(dòng)開(kāi)發(fā)人員必備的技能 ! 1、了解設(shè)備樹(shù)文件 在3.x版本以前的Linux內(nèi)核源碼中,存在大量的“arc/arm/mach-xxx”和“arc/arm/plat-xxx”文件夾,里面很多個(gè)“.c”和“.h”文件,它們用來(lái)描述設(shè)備信息。而現(xiàn)在的ARM架構(gòu)是采用“設(shè)備樹(shù)”來(lái)描述設(shè)備信息?!霸O(shè)備樹(shù)

    2024年03月12日
    瀏覽(19)
  • runtime error: addition of unsigned offset to 0x602000000130 overflowed to 0x60200000012c (stl_vecto

    非常細(xì)節(jié)的數(shù)組越界問(wèn)題?。?! 先看出錯(cuò)部分源碼: 這是正確代碼: 錯(cuò)誤原因很簡(jiǎn)單, 因?yàn)閖--后沒(méi)有立即進(jìn)行判斷,即j--后可能使得j=-1,然后直接訪問(wèn)matrix[i][-1],導(dǎo)致數(shù)組越界, 所以這里加上continue強(qiáng)制進(jìn)行下一循環(huán)判斷。

    2024年02月11日
    瀏覽(15)
  • kafka消費(fèi)者報(bào)錯(cuò)Offset commit ......it is likely that the consumer was kicked out of the group的解決

    2022年10月份接到一個(gè)小功能,對(duì)接kafka將數(shù)據(jù)寫(xiě)到數(shù)據(jù)庫(kù),開(kāi)始的需求就是無(wú)腦批量insert,隨著時(shí)間的推移,業(yè)務(wù)需求有變更,kafka的生產(chǎn)消息頻次越來(lái)越高,到今年7月份為止就每秒會(huì)有幾十條甚至上百條,然后消費(fèi)消息的代碼就報(bào)錯(cuò): Caused by: org.apache.kafka.clients.consumer.Com

    2024年02月07日
    瀏覽(22)
  • flink-cdc-mysql The MySQL server has a timezone offset (0 seconds ahead of UTC) which does not match

    報(bào)錯(cuò)信息 MySQL server has a timezone offset (0 seconds ahead of UTC) which does not match the configured timezone Asia/Shanghai. Specify the right server-time-zone to avoid inconsistencies for time-related fields. 查看mysql配置 這時(shí)候你如果設(shè)置 **serverTimeZone(“Asia/Shanghai”)**會(huì)報(bào)錯(cuò) 可以使用命令設(shè)置 接下來(lái)就可以正常鏈

    2024年02月11日
    瀏覽(15)
  • 解決Correct the classpath of your application so that it contains compatible versions

    解決Correct the classpath of your application so that it contains compatible versions

    springboot啟動(dòng)失敗 報(bào)錯(cuò)Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.web.servlet.handler.AbstractHandlerMethodMapping and org.springframework.web.method.HandlerMethod 排查發(fā)現(xiàn):pom依賴同時(shí)引用了兩個(gè)不同版本的web包。 刪掉一個(gè)web依賴重新構(gòu)建以后問(wèn)題直

    2024年02月09日
    瀏覽(119)
  • 關(guān)于打開(kāi)keil工程文件是出現(xiàn)“contains an incorrect path”現(xiàn)象

    關(guān)于打開(kāi)keil工程文件是出現(xiàn)“contains an incorrect path”現(xiàn)象

    復(fù)制一個(gè)工程文件,打開(kāi)工程最后出現(xiàn)“contains an incorrect path” 進(jìn)行全局編譯,并無(wú)異常,燒錄兩臺(tái)設(shè)備其中一臺(tái)燒錄正常,一臺(tái)出現(xiàn)以下現(xiàn)象:即“content mismatch at :0x00XXXXXXX” ?單片機(jī)實(shí)際FLASH為128K ?編譯后僅使用40多K,應(yīng)該不是程序過(guò)大導(dǎo)致 ?嘗試用小些(約38K)程序燒

    2024年02月15日
    瀏覽(18)
  • HiveSQL題——array_contains函數(shù)

    HiveSQL題——array_contains函數(shù)

    目錄 一、原創(chuàng)文章被引用次數(shù) 0 問(wèn)題描述 1 數(shù)據(jù)準(zhǔn)備 2 數(shù)據(jù)分析 ?編輯 3 小結(jié) 二、學(xué)生退費(fèi)人數(shù) 0 問(wèn)題描述 1 數(shù)據(jù)準(zhǔn)備 2 數(shù)據(jù)分析 3 小結(jié) 0 問(wèn)題描述 ? ?求原創(chuàng)文章被引用的次數(shù),注意本題不能用關(guān)聯(lián)的形式求解。 1 數(shù)據(jù)準(zhǔn)備 ? ?id表示文章id,oid表示引用的其他文章id,當(dāng)

    2024年04月23日
    瀏覽(18)
  • MySQL 中的 JSON_CONTAINS 函數(shù)詳解

    在處理 MySQL 中的 JSON 數(shù)據(jù)時(shí),我們經(jīng)常需要檢查一個(gè) JSON 文檔是否包含特定的值。這時(shí), JSON_CONTAINS 函數(shù)就顯得非常有用。 JSON_CONTAINS 是 MySQL 提供的一個(gè) JSON 函數(shù),用于測(cè)試一個(gè) JSON 文檔是否包含特定的值。如果包含則返回 1,否則返回 0。該函數(shù)接受三個(gè)參數(shù): target : 待搜

    2024年02月03日
    瀏覽(24)
  • 【Java遇錯(cuò)】Correct the classpath of your application so that it contains a single, compatible version..

    【Java遇錯(cuò)】Correct the classpath of your application so that it contains a single, compatible version..

    問(wèn)題描述: 啟動(dòng)服務(wù)出現(xiàn)以下錯(cuò)誤: 啟動(dòng)測(cè)試出現(xiàn)以下錯(cuò)誤: 問(wèn)題原因: 錯(cuò)誤:Correct the classpath of your application so that it contains a single, compatible version of com.baomidou.mybatisplus.core.toolkit.ReflectionKit(更正應(yīng)用程序的類路徑,使其包含com.baomidou.mybatisplus.core.toolkit.ReflectionKit的單個(gè)

    2024年02月03日
    瀏覽(21)
  • 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘se

    ?Navicat Premium 16 版本 這個(gè)錯(cuò)誤是由于 MySQL 的新版本中默認(rèn)開(kāi)啟了 ONLY_FULL_GROUP_BY 模式,即在 GROUP BY 語(yǔ)句中的 SELECT 列表中,只能包含分組或聚合函數(shù),不能包含其他列。而你的查詢語(yǔ)句中出現(xiàn)了一個(gè)列 senior_two.score.student_id ,它既沒(méi)有被分組也沒(méi)有被聚合,因此 MySQL 報(bào)出了這

    2024年02月15日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包