考虑下面的C代码:如何计算C中两个不同结构成员之间的偏移量?
struct Foo
{
short a;
long b;
char c;
void* d;
};
我知道这是不可能知道的sizeof使用的整个结构的大小。是否有可能知道这个结构的一个子集的大小,或者(用不同的方式)知道两个成员之间的距离?我意识到可以基于我想要的偏移量嵌套结构(然后可以使用sizeof),但是说我想知道a和d之间的字节数?此外,我想这样做,而不实例化一个对象(如sizeof)。 (我知道如果我有一个对象,那么我可以看看foo.d和foo.a之间的地址差异)。这可能吗?
正确的术语是“成员”,而不是“属性”。顺便说一句,我想不出这种信息的好用途;你打算如何处理它?是否有可能发生[XY问题](http://meta.stackexchange.com/q/66377/167210)? – 2012-07-23 03:01:37
@KeithThompson正式指出,谢谢。 – 2012-07-23 03:02:02
@KeithThompson是的,这可能是我有一个XY问题。考虑到我原来的问题有一个答案,我会更多地考虑这个问题。这是可能的,我不需要抵消。 – 2012-07-23 03:14:39