在一个项目中,我需要获得特定结构成员的偏移量。但是我不能使用任何宏。所以我尝试采用这背后的逻辑
#define OFFSETOF(struct_name, fld_name) \
(unsigned int)&(((struct_name *)0)->fld_name)
把它转换成一个函数,得到这个。
unsigned long offset_of_1(void *ptr, void *field)
{
return ((unsigned long)field - (unsigned long)ptr);
}
只要我使用一个已经初始化的结构,它就可以工作,这是我发现的唯一一个看起来可以工作的工作,但是我想知道是否有更好的方法来做到这一点?
1条答案
按热度按时间wbrvyc0a1#
有没有更好的办法
使用标准库
offsetof()
。或者
1.“我不能使用任何宏。”--〉与规则制定者联系,允许使用标准库宏。@StoryTeller - Unslander Monica@Steve Summit
1.发布看起来“需要获取特定结构成员的偏移量”的代码,也许有一种替代方法是可能的。