C 获取字段在结构中的位置

C 获取字段在结构中的位置,c,struct,C,Struct,一个相当简单的问题(我希望如此)。给定C中的结构(其布局在编译时已知),是否有方法(通过宏或其他)可以访问结构中命名字段的字节位置 对工会的支持将是一种奖励。编译器是VC++2008。假设使用了#pragma包(1) 干杯您正在寻找的补偿。它应该在stddef.h中,但如果您没有,请提供一个示例实现(来自): 对于联合,每个字段的偏移量都是0使用offset of,from (除非MSVC++2008没有提供它,在这种情况下,请按照Carl Norum实现您自己的。不过,我很确定它是从C89开始

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

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


干杯

您正在寻找的补偿。它应该在
stddef.h
中,但如果您没有,请提供一个示例实现(来自):


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

使用
offset of
,from


(除非MSVC++2008没有提供它,在这种情况下,请按照Carl Norum实现您自己的。不过,我很确定它是从C89开始使用的)。

接受,但我必须添加一个自定义OffsetFunion宏,因为您提供的宏不支持union。我刚刚把union放在
st*
前面,效果很好。谢谢
#define offsetof(st, m) \
    ((size_t) ( (char *)&((st *)(0))->m - (char *)0 ))