[问题] 关于想计算出结构成员的offset

楼主: EngRookie (EngRookie)   2017-04-19 19:12:06
大家好 新手又来叨扰大家了
题目: 我想写出一个func 并且用这func算出member的offet位置
typedef struct _channel{
int channelOne; //0
char pChannel; //4
short iChl; //6
int abc; //8
}channel_t, *pChannel_t;
(后面的注解是内存起始位置)
例如我想算出 abc 这个成员的offset,那么就应该得出 offset=8
我的想法如下
channel_t *obj = (channel_t *)0; //这时的obj位址指向0
int *offset = &(obj->abc); //这时的 offset的位址确实等于8
问题来了....这边的8实际上还是一个"address"...
我该如何让它变成一个我想要的int整数呢?
想法一: int diff = (int)(&(obj->abc)); //嗯....error显示不能这样转
想法二: int *diff = &(obj->abc) - &(obj-channelOne) //位置相减 这想法好像怪怪的..
作者: kao50126 (无从)   2017-04-19 19:15:00
address的差用ptrdiff_t存还有可以用offsetof
楼主: EngRookie (EngRookie)   2017-04-19 19:21:00
查了一下 发现我这东西跟offsetof根本一模一样阿...

Links booklink

Contact Us: admin [ a t ] ucptt.com