考慮下面的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