【发布时间】:2012-07-23 02:54:05
【问题描述】:
考虑以下 C 代码:
struct Foo
{
short a;
long b;
char c;
void* d;
};
我知道使用 sizeof 可以知道整个结构的大小。是否有可能知道这个结构的一个子集的大小,或者(换句话说)知道两个成员之间的距离?我意识到可以根据我想要的偏移量嵌套结构(然后可以使用 sizeof),但是说我想知道 a 和 d 之间的字节数?另外,我想在不实例化对象的情况下执行此操作(类似于 sizeof)。 (我意识到如果我有一个对象,那么我可以查看 foo.d 和 foo.a 之间的地址差异)。这可能吗?
【问题讨论】:
-
正确的术语是“成员”,而不是“属性”。顺便说一句,我想不出这些信息有什么用处。你打算用它做什么?你有可能有XY problem吗?
-
@KeithThompson 注意到了,谢谢。
-
@KeithThompson 是的,我可能有 XY 问题。考虑到我原来的问题有答案,我会更多地考虑这一点。可能我不需要 offsetof。