我正在寻找一段代码,可以告诉我结构中字段的偏移而不分配结构的实例.
IE:给定
struct mstct { int myfield; int myfield2; };
我可以写:
mstct thing; printf("offset %lu\n", (unsigned long)(&thing.myfield2 - &thing));
获得offset 4
输出.如果没有mstct thing
声明/分配一个怎么办呢?
我知道&
并不总是指向结构的第一个字段的第一个字节,我可以在以后解释.
标准的offsetof()宏怎么样(在stddef.h中)?
编辑:对于因某些原因可能没有offsetof()宏的人,您可以使用以下内容获得效果:
#define OFFSETOF(type, field) ((unsigned long) &(((type *) 0)->field))
是的,使用offsetof
宏(至少使用GNU CC)可用于C和C++代码:
offsetof(struct mstct, myfield2)