创建线程不兼容的类型

时间:2015-08-15 08:29:00

标签: c struct pthreads

您正在尝试创建一个调用带结构的函数的线程。 面临的问题是gcc告诉我一个不兼容的指针

这是错误

warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [enabled by default]
/usr/include/pthread.h:225:12: note: expected ‘void * (*)(void *)’ but argument is of type ‘void * (*)(struct sonicPins *)

与此错误相关的代码行 pthread_create(&thr1, NULL, &threadFunc,(void*) &args1);

这是它试图调用的函数

void* threadFunc(struct sonicPins *args)

结构在sonicThread.h中定义,主要指向struct

在我的主要功能之上

struct sonicPins *args1;

我的主要是

args1 = malloc(sizeof(struct sonicPins));

args1->trig1 = 21;
args1->echo1 = 20;
//front right.
args1->trig2 = 16;
args1->echo2 = 12;
//rear left;
args1->trig3 = 26;
args1->echo3 = 19;
//rear right.
args1->trig4 = 13;
args1->echo4 = 6;

我尝试了各种方法来解决问题,但找不到也没有找到问题的解决方案。

1 个答案:

答案 0 :(得分:3)

GCC的错误消息很简单:pthread_create方法需要一个接受void*参数的方法。

将您的功能更改为:

void* threadFunc(void* sonicPinsPtr) {
    struct sonicPins* args = sonicPinsPtr;

    // rest of your code here
}