c - 用 linux/list.h 初始化链表

标签 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);
}

这会产生警告

initializer element is not computable at load time

在 LIST_HEAD()

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

Alternatively, lists can be initialized at compile time

有人介意帮我解决这个问题吗?

最佳答案

你实际上想做的是:

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

关于c - 用 linux/list.h 初始化链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8236812/

相关文章:

c - 矩阵和 vector 乘法优化算法

c# - 这里发生了什么?没有默认构造函数时如何调用?

c - 将字符串分配为结构成员时出现内存泄漏

java - Java套接字,创建自己的通用方法//恶性循环

c++ - 具有私有(private)构造函数和自身静态数组的类

swift - 如何使用 EnvironmentObject 在 SwiftUI 中初始化 State 属性?

c - 如何设置 openMP

c++ - 如何在 Verifone VX675 中使用 unicode 字体

c - 求 0 到 125 之间的数的立方根

c++ - 打印一个结构指针和一个引用的结构成员