[問題] 請益一段程式碼
請教各位高手
最近在研究嵌入式系統
看到一段程式碼 部份有些疑問想請教
/*##### 宣告 ##### */
typedef struct _dlink{
dlink_t head;
}dlink;
typedef struct _dlink_t{
struct _dlink_t *prev;
struct _dlink_t *next;
}dlink_t;
typedef struct _u_idle_t{
dlink_t link;
u_idle_callback_t idle;
}u_idle_t;
typedef void (*u_idle_callback_t) (void);
dlink idle_l;
/*##### 程式碼 #####*/
do
{
dlink_t *entry;
for ( (entry) = (&idle_1)->head.next;
(entry) != &(&idle_1)->head;
(entry) = (entry)->next;
) {
u_idle_t *idle = ( (u_idle_t*) ((u8 *) (entry) -
(u8 *) (&((u_idle_t *) 0)->link ))); //Q1
idle->idle();
} //end for
}while(0);
想問說 Q1 這行的該如何解釋? 這"0"是說位址嘛?
還是說有啥特別用意??
感謝各位前輩看完
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.41.180.25
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1461939360.A.68F.html
推
04/29 22:35, , 1F
04/29 22:35, 1F
→
04/29 22:36, , 2F
04/29 22:36, 2F
推
04/29 22:56, , 3F
04/29 22:56, 3F
→
04/29 23:24, , 4F
04/29 23:24, 4F
→
04/30 00:36, , 5F
04/30 00:36, 5F
→
04/30 00:59, , 6F
04/30 00:59, 6F
推
04/30 01:38, , 7F
04/30 01:38, 7F
→
04/30 09:21, , 8F
04/30 09:21, 8F
→
04/30 09:43, , 9F
04/30 09:43, 9F
→
04/30 12:37, , 10F
04/30 12:37, 10F