offsetof巨集的原理以及作用

2021-09-22 23:54:44 字數 502 閱讀 8701

原理:

虛擬乙個type型別的結構體變數,通過type.member的方式來訪問member成員,進而得到member成員相對於整個結構體首位址的偏移量。

作用:為接下來的container_of巨集的講解出現做鋪墊

offsetof巨集: #define offsetof(type,member) ((int) &((type *)0)->member)

接下來看看例程就明白了,其實這個巨集挺簡單的,&((type *)0)->member其實相當於得到了成員的偏移減去0位址偏移,也就是結構體的首位址,進而就得到了該成員相當於整個結構體的偏移量。

#include #define offsetof(type,member) ((int) &((type *)0)->member)

#pragma pack(4)

struct ptr

;#pragma pack()

int main(void)

offsetof 巨集定義的詳解

define offsetof type,member size t type 0 member 在這裡我們解釋一下這個巨集定義,0我們知道 和null 一樣的意思 但是為什莫上面的表示式可以執行,我們知道操作乙個空指標不是會segment fault 嗎?這裡就要解釋一下了 這個巨集 並不是時我們...

springcloud的 作原理

springcloud的 作原理 springcloud由以下 個核 元件構成 eureka 各個服務啟動時,eureka client都會將服務註冊到eureka server,並且eureka client還可以反過來從eureka server拉 取登錄檔,從 知道其他服務在哪 ribbon ...

C語言巨集中 和 的用法以及巨集展開規則

之前也看過一些c語言巨集的使用,特別是對 t 以及 text 巨集的實現也比較感興趣,但是之前對 t,text巨集的實現也是一知半解,沒有徹底搞明白,週末在寫另外一篇部落格 時恰好又用到了巨集,所以想好好把這塊學習整理下。的作用是把乙個token 標記 變成乙個字串,也就是使用 把token包含起來...