Инициализируйте связанный список с помощью linux / list.h - PullRequest
1 голос
/ 23 ноября 2011

Я использую linux / list.h для работы со списками, но у меня возникают проблемы с началом работы.

Я экспериментировал с различными комбинациями, основанными на рекомендациях нескольких руководств, но ничего не получалосьдо сих пор.Вот что я считаю своей ближайшей попыткой инициализации:

typedef struct {
    int to;
    struct list_head list;
    int from;
} myFrame;

int main() {
    LIST_HEAD(listInstance);

    myFrame* foo = malloc(sizeof(*foo));
    list_add(&foo->list, &listInstance);
}

Это выдает предупреждение

элемент инициализатора не вычисляется во время загрузки

at LIST_HEAD ()

Однако этот , кажется, указывает на то, что я могу.

В качестве альтернативы списки могут быть инициализированы во время компиляции

Не мог бы кто-нибудь помочь мне обернуть это вокруг моего мозга?

1 Ответ

4 голосов
/ 23 ноября 2011

Вы действительно хотите сделать:

LIST_HEAD(this_is_a_list_instance);

Затем вы можете сделать:

struct myList *foo = malloc(sizeof(*foo));
foo->to = 3;
foo->from = 4;
list_add(&foo->list, &this_is_a_list_instance);

Это также, вероятно, будет более последовательным, если вы назовете его myObject вместо myList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...