使用linux / list.h初始化链表

时间:2011-11-23 02:59:49

标签: c struct initialization

我正在使用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);
}

这会产生警告

  

初始化元素在加载时不可计算

在LIST_HEAD()

然而,this似乎表明我可以。

  

或者,可以在编译时初始化列表

有人会介意帮助我绕过这个吗?

1 个答案:

答案 0 :(得分:4)

你真的想这样做:

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,这也可能会更加一致。