struct list
{
struct list **next, **prev;
}
//Global struct
struct list *threads = {&threads, &threads}; //Warnings here:
// warning: initialization from incompatible pointer type
// warning: excess elements in scalar initializer
// warning: (near initialization for 'threads')
PS:我在这个文件中没有main
功能。这必须是全球性的。
答案 0 :(得分:3)
您需要使用指向threads
的指针初始化指针到结构列表变量struct list
。 {&threads, &threads}
不是指向struct list
的指针,但它可能是struct list
。
为了定义实际的结构实例并获取指向它的指针,您可以使用复合文字并获取其地址:
struct list *threads = &((struct list){&threads, &threads});
(注意:复合文字((type){initializer})
是C99功能;一些未达到13年标准的编译器可能会拒绝它。)