Global void *,使其成为指向结构指针的指针

时间:2012-04-23 21:39:30

标签: pointers void

我有类似的事情:

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

全球宣言:

struct list *threads = &((struct list){&threads, &threads});
void* vp_threads;      /Error here:  previous declaration of 'vp_threads' was here
vp_threads = threads;  //Error here: conflicting types for vp_threads

我试过的第二种方式:

void* vp_threads = threads; //Error: initializer element is not constant

我必须这样做因为......(见下文!)

void some_func()
{
   add_head(vp_threads, ...)
...
}

void add_head(void* x, ...)
{ ... }

(PS:并没有main()或初始化函数,这是core.c文件的类型,实现了.h中的所有函数)

为什么这不起作用,我只是想让void *指向我的结构。这有什么问题?

1 个答案:

答案 0 :(得分:1)

尝试做

vp_threads = threads;

在main(或初始化函数)

你不能在全球范围内发表声明。你的陈述vp_threads = threads;必须住在某个地方的某个地方