この種の構造体は、リンクリストの先頭として使用されます。
struct lista
{
struct lista* next;
struct lista* prev;
};
nextとprevの両方がそれ自体を構造化することを指している場合、リストは空です。構造を初期化するには、次のマクロを使用できます。
#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 }