将结构传递给线程的简单说明

时间:2014-03-27 01:06:40

标签: c error-handling pthreads

不确定原因,但......会导致错误的原因

main.c:126:4:错误:无法转换为指针类型main.c:126:4:警告:从不兼容的指针类型[默认启用]传递'pthread_create'的参数3 /usr/include/pthread.h:225:12:注意:预期'void *(*)(void )'但参数的类型为'void()(struct arrayslice)'

据我所知,我已正确制作了此功能的原型。

struct People{

    int count;
    int levels;
};



struct arrayslice *args = &current;
pthread_create(&thread, NULL, countall, (void*) &args);

1 个答案:

答案 0 :(得分:1)

您可以参考以下文章。这个实际上包含有关pthread的有用信息以及相关的示例和解释。

https://computing.llnl.gov/tutorials/pthreads/

  

预期'void *(*)(void)'但参数的类型为'void()(struct   arrayslice)”

关于编译错误,这是因为你没有在第三个参数中传递正确的函数指针。看起来你的功能是

void countall(struct arrayslice);

然而pthread期望你的功能应该是

void* countall(void* arrayslice);