一个相当简单的问题(我希望)。给定C中的结构(其编译在编译时是已知的),是否有一种方法(通过宏或其他)我可以访问结构中命名字段的字节位置?
对工会的支持将是一个奖励。编译器是VC ++ 2008.假设使用#pragma pack(1)
。
干杯
答案 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以来一直存在)。