C / C ++结构偏移量
我正在寻找一段代码,可以告诉我一个结构中的字段的偏移量,而不分配结构的一个实例。
IE:给
struct mstct { int myfield; int myfield2; };
我可以写:
mstct thing; printf("offset %lu\n", (unsigned long)(&thing.myfield2 - &thing));
得到“偏移4”的输出。 我怎样才能做到这一点,没有“mstct事”声明/分配一个?
我知道&<struct>并不总是指向结构的第一个字段的第一个字节,我可以在后面说明。
标准offsetof()macros(在stddef.h中)如何?
编辑:对于可能由于某种原因而没有使用offsetof()macros的人,可以使用如下所示的效果:
#define OFFSETOF(type, field) ((unsigned long) &(((type *) 0)->field))
正确的,使用offsetof
macros(至less在GNU CC中)可用于C和C ++代码:
offsetof(struct mstct, myfield2)
printf(“offset:%d \ n”,&((mstct *)0) – > myfield2);