define宏定义的这句话是什么意思呢?
在一本书上看到了这段代码,其含义是求一个结构体成员相对于结构体开始位置的偏移量,但不理解其含义,求大牛解释.
struct{
int a;
double b[20];
double c;
}struc;
#define FIND(struc,c) ((size_t)&((struc *)0)->e)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个宏应该是参考
linux
的offsetof
宏定义:#define offsetof(TYPE, MEMBER) (size_t)(&(((TYPE*)0)->MEMBER))
这个宏的分析:
struct
结构体对象的内存位置是连续的,假设整个对象的起始地址是0
,(struc *)0
这里做了强制转换;那么我们首先解引用取得结构体某个元素的值然后再获得元素的地址,这个地址就是相对于整个结构体对象内存的起始位置的
题主你看的是扫描版的么?