C / C ++结构偏移(C/C++ Structure offset)

2019-07-17 22:30发布

我找了一段代码,可以告诉我一个结构中的一个字段的偏移量,而不分配结构的一个实例。

IE浏览器:给定

struct mstct {
    int myfield;
    int myfield2;
};

我可以这样写:

mstct thing;
printf("offset %lu\n", (unsigned long)(&thing.myfield2 - &thing));

并得到offset 4的输出。 我怎样才能做到这一点不说mstct thing报关/分配呢?

我知道, &<struct>并不总是在结构的第一个字段的第一个字节点,我以后可以考虑这一点。

Answer 1:

如何(在STDDEF.H)标准offsetof()宏?

编辑:对于谁可能没有可用于某些原因offsetof()宏,你可以使用像得到的效果:

#define OFFSETOF(type, field)    ((unsigned long) &(((type *) 0)->field))


Answer 2:

右,使用offsetof宏,它(至少在GNU CC)是提供给C和C ++代码:

offsetof(struct mstct, myfield2)


Answer 3:

的printf( “偏移:%d \ n”,&((mstct *)0) - > myfield2);



文章来源: C/C++ Structure offset
标签: c++ c oop