您正在尝试创建一个调用带结构的函数的线程。 面临的问题是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;
我尝试了各种方法来解决问题,但找不到也没有找到问题的解决方案。
答案 0 :(得分:3)
GCC的错误消息很简单:pthread_create
方法需要一个接受void*
参数的方法。
将您的功能更改为:
void* threadFunc(void* sonicPinsPtr) {
struct sonicPins* args = sonicPinsPtr;
// rest of your code here
}