在结构中获取场的位置

时间:2010-11-08 17:42:55

标签: c struct

一个相当简单的问题(我希望)。给定C中的结构(其编译在编译时是已知的),是否有一种方法(通过宏或其他)我可以访问结构中命名字段的字节位置?

对工会的支持将是一个奖励。编译器是VC ++ 2008.假设使用#pragma pack(1)

干杯

2 个答案:

答案 0 :(得分:7)

您正在寻找offsetof。它应该在stddef.h中,但如果您没有,那么示例实现(来自wikipedia):

#define offsetof(st, m) \
    ((size_t) ( (char *)&((st *)(0))->m - (char *)0 ))

对于联合,每个字段的偏移量为0

答案 1 :(得分:3)

使用offsetof中的<stddef.h>

(除非MSVC ++ 2008不提供它,在这种情况下根据Carl Norum实现你自己的。我很确定它自C89以来一直存在)。