看板 C_and_CPP 關於我們 聯絡資訊
在 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
QQ29:http://0rz.tw/RetJH 看這就知道了 08/25 20:20
fantasymew:所以這樣初始化的結果,next和prev都指向自己囉? 08/25 20:52
QQ29:看name是甚麼 但他這樣寫是指向同一個東西 08/25 21:04
fantasymew:謝謝樓上 08/25 22:00