嗨,我试图创建一个线程,调用一个接受结构的函数。我面临的问题是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中定义,主要指向该结构
在我拥有的main函数之上
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;我尝试了各种方法来解决这个问题,但找不到也找不到解决问题的方法。
发布于 2015-08-15 16:31:19
GCC的错误消息很简单:pthread_create方法需要一个接受void*参数的方法。
将您的函数更改为:
void* threadFunc(void* sonicPinsPtr) {
struct sonicPins* args = sonicPinsPtr;
// rest of your code here
}https://stackoverflow.com/questions/32022963
复制相似问题