我有类似的事情:
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 *指向我的结构。这有什么问题?
答案 0 :(得分:1)
尝试做
vp_threads = threads;
在main(或初始化函数)
你不能在全球范围内发表声明。你的陈述vp_threads = threads;
必须住在某个地方的某个地方