[問題] 巨集問題

看板C_and_CPP (C/C++)作者 (小孫)時間16年前 (2009/08/25 19:55), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
在 trace Linux kernel 看到一個疑問 某 c 檔裡有這樣一段程式碼: static LIST_HEAD(ipt_match); 但是該巨集被定義在另一 h 檔如下所示: struct list_head { struct list_head *next, *prev; } #define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name) 想請問一下這樣經過 LIST_HEAD_INIT 出來的初始化結果是如何? 不是很懂第一個巨集後面 { &(name), &(name) } 的意思 謝謝幫忙解答 -- 西 ╮╭ ── ││ ___ ╭╮ http://fantasymew.pixnet.net/blog ╰╯ ││ ── ╰╯╰╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.72.217

08/25 20:17, , 1F
只是帶進去阿 這是struct特別的初始話方式
08/25 20:17, 1F

08/25 20:18, , 2F
意思是 next=&(name); prev=&(name);
08/25 20:18, 2F

08/25 20:20, , 3F
http://0rz.tw/RetJH 看這就知道了
08/25 20:20, 3F

08/25 20:52, , 4F
所以這樣初始化的結果,next和prev都指向自己囉?
08/25 20:52, 4F

08/25 21:04, , 5F
看name是甚麼 但他這樣寫是指向同一個東西
08/25 21:04, 5F

08/25 22:00, , 6F
謝謝樓上
08/25 22:00, 6F
文章代碼(AID): #1Aaz4QS0 (C_and_CPP)
文章代碼(AID): #1Aaz4QS0 (C_and_CPP)