作者fantasymew (小孫)
看板C_and_CPP
標題[問題] 巨集問題
時間Tue Aug 25 19:54:57 2009
在 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
推 QQ29:只是帶進去阿 這是struct特別的初始話方式 08/25 20:17
→ QQ29:意思是 next=&(name); prev=&(name); 08/25 20:18
→ fantasymew:所以這樣初始化的結果,next和prev都指向自己囉? 08/25 20:52
推 QQ29:看name是甚麼 但他這樣寫是指向同一個東西 08/25 21:04
→ fantasymew:謝謝樓上 08/25 22:00