首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建线程不兼容的类型

创建线程不兼容的类型
EN

Stack Overflow用户
提问于 2015-08-15 16:29:00
回答 1查看 199关注 0票数 0

嗨,我试图创建一个线程,调用一个接受结构的函数。我面临的问题是gcc在告诉我一个不兼容的指针

这就是错误

代码语言:javascript
复制
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)相关的代码行;

下面是它试图调用的函数

代码语言:javascript
复制
void* threadFunc(struct sonicPins *args)

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

在我拥有的main函数之上

代码语言:javascript
复制
struct sonicPins *args1;

在我的身体里,我有

代码语言:javascript
复制
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;

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

EN

回答 1

Stack Overflow用户

发布于 2015-08-15 16:31:19

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

将您的函数更改为:

代码语言:javascript
复制
void* threadFunc(void* sonicPinsPtr) {
    struct sonicPins* args = sonicPinsPtr;

    // rest of your code here
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32022963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档