【发布时间】:2011-08-23 13:42:54
【问题描述】:
这种结构体作为链表的头部:
struct lista
{
struct lista* next;
struct lista* prev;
};
当 next 和 prev 都指向 struct 本身时,列表为空。 以下宏可用于初始化结构:
#define LISTA_INIT_EMPTY(list) { .next = (list), .prev = (list) }
这样:
struct lista my_list = LISTA_INIT_EMPTY(&my_list);
但是,有没有办法通过以下方式做同样的事情,没有宏参数?:
struct lista my_list = LISTA_INIT_EMPTY;
我尝试了以下,但它导致了编译错误:
#define LISTA_INIT_EMPTY { .next = &.next, .prev = &.next }
【问题讨论】:
标签: c initialization designated-initializer