在C語言中,#define
宏可以用來定義offsetof
宏,用來計(jì)算結(jié)構(gòu)體中成員的偏移量。offsetof
宏通常定義如下:
#define offsetof(type, member) ((size_t) &((type *)0)->member)
使用offsetof
宏時(shí),需要傳入結(jié)構(gòu)體類型和成員變量名作為參數(shù),如下所示:
#include <stdio.h>
#include <stddef.h>
struct example {
int x;
char y;
float z;
};
int main() {
size_t offset = offsetof(struct example, y);
printf("Offset of member y in struct example is %zu\n", offset);
return 0;
}
運(yùn)行上面的代碼會(huì)輸出Offset of member y in struct example is 4
,表示y
成員在struct example
結(jié)構(gòu)體中的偏移量為4個(gè)字節(jié)。