作者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
1F:推 QQ29:只是带进去阿 这是struct特别的初始话方式 08/25 20:17
2F:→ QQ29:意思是 next=&(name); prev=&(name); 08/25 20:18
4F:→ fantasymew:所以这样初始化的结果,next和prev都指向自己罗? 08/25 20:52
5F:推 QQ29:看name是甚麽 但他这样写是指向同一个东西 08/25 21:04
6F:→ fantasymew:谢谢楼上 08/25 22:00