[問題] 關於想計算出結構成員的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