宏定義:獲得一個field在結構體(struct type)中的偏移量

#define OFFSETOF(type, field) ((size_t)&(((type *)0)->field)) spa

(type *)0:把0地址當成type類型的指針。 指針

((type *)0)->field:對應域的變量。 變量

&((type *)0)->field:取該變量的地址,其實就等於該域相對於0地址的偏移量。 數據

(size_t)&(((type *)0)->field):將該地址(偏移量)轉化爲size_t型數據。

相關文章
相關標籤/搜索