这种结构用作链表的头部:
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 }