2

结构定义

struct list
{
  struct list **next, **prev;
}

核心.c

//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函数。这必须是全球性的。

4

1 回答 1

3

您需要使用指向 a 的指针初始化指向结构列表threads的指针变量struct list{&threads, &threads}不是指向 a 的指针struct list,但它可能是 a struct list

为了定义一个实际的结构实例并获得指向它的指针,您可以使用复合文字并获取其地址:

struct list *threads = &((struct list){&threads, &threads});

(注意:复合文字是 C99 的一个特性;一些没有赶上 13 年前标准的编译器可能会拒绝它。)((type){initializer})

于 2012-04-23T19:52:02.667 回答