全局结构指针初始化

时间:2012-04-23 18:43:47

标签: c struct initialization global

结构定义

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

core.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功能。这必须是全球性的。

1 个答案:

答案 0 :(得分:3)

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

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

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

(注意:复合文字((type){initializer})是C99功能;一些未达到13年标准的编译器可能会拒绝它。)