• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > pthread_create创建多线程,报错问题,求教,急

pthread_create创建多线程,报错问题,求教,急

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了pthread create,pthread create函数,pthread create参数,linux pthread create,pthread create返回值等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: pthread_create创建多线程,报错问题,求教,急
描述:

在一个读写的程序中,我打算用线程去做,其中int FmSend(int fd, char *send_buf,int data_len);//发送信息
为了能将FmSend放到线程中处理,建了一个结构体
/*线程一:发送包参数结构体*/
typedef struct
{
int fd;
    char *send_buf;
int data_len;
}SendParameter;
主调用函数如下
int main(int argc,char **argv)
{ int fd;                            //文件描述符
    int err;                           //返回调用函数的状态
    int len;
    char send_buf[]= "1232434434";  //初始化,
    char rcv_buf[100];
    pthread_t id_read,id_write;
    int ret;
    fd = FmOpen(fd,"/dev/ttyUSB0");   //打开串口,返回文件描述符
    err = FmInit(fd,38400,0,8,1,'N');
    if(err >0)
    {
         printf("Set Port Exactly!\n");
    }
    else
         printf("Set Port Inexactly!\n");
    /*创建线程一*/
//    //设置分离属性
//    pthread_attr_t attr;
//    pthread_attr_init(&attr);
//    pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
    SendParameter SendPara;
    SendPara.fd = fd;
    SendPara.send_buf = send_buf;
    SendPara.data_len = sizeof(send_buf);
    ret = pthread_create(&id_read,NULL,void*(&FmSend)(void*),&(SendPara));
    if(ret!=0)
    {
        printf("Create pthread error!\n");
        return -1;
    }
//    len = FmSend(fd,send_buf,sizeof(send_buf)); //发送命令数据
//    if(len > 0)
//    printf("send data successful\n");
//    else
//    printf("send data failed!\n");
    printf("receive data is :\n");
    while (1) //循环读取数据
   {
        len = FmRecv(fd,rcv_buf,sizeof(rcv_buf));
        if(len > 0)
        {
               rcv_buf[len] = '\0';
               printf("%s\n",rcv_buf);
         //    printf("len = %d\n",len);
        }
        else
        {
               printf("cannot receive data\n");
               FmClose(fd);
               return 0;
        }
        sleep(2);
    }
    return 1;
}
提示Multiple markers at this line
- Syntax error
- expected expression before ‘void’
- too few arguments to function 
即pthread_create处报错
请问怎么修改


解决方案1:

 ret = pthread_create(&id_read,NULL,void*(&FmSend)(void*),&(SendPara));
改成 ret = pthread_create(&id_read,NULL,FmSend,&(SendPara));
也就是函数指针直接传函数名就可以了


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • pthread_create创建多线程,报错问题,求教,急

相关文章

  • 2017-06-05 mirror问题
  • 2017-09-12多引脚的编程应用
  • 2017-06-05 开机时,看不到新加驱动输出的串口信息,请问这是什么原因?
  • 2017-06-17ARM和Thumb状态
  • 2017-06-05 有哪位老大知道PowerPC和PC的数据格式的转换?
  • 2017-06-05 cc2530无线点对点通信,不用协议栈,直接操作寄存器实现。
  • 2017-06-05 I2C地址冲突问题
  • 2017-06-05 矢量图形存储
  • 2017-06-05 请问有谁知道atmelsam3sek2开发板无线模块的型号
  • 2017-06-05 有关Redhat默认网关的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何建立嵌入式系统开发平台
    • 『高分』如何编写一个vfw接口的虚拟摄像头驱动,
    • NV-Geforce4-MX400是什么显卡啊,从哪里找驱动程序啊??
    • 光驱挂载不上我用的HI3531
    • 谁开发过打印机驱动?
    • 关与虚拟硬盘!
    • 添加WindML组件后,编译出现错误:make:[prjConfigo]Error0x1
    • 双网双待双通ubuntuwindows双系统问题
    • 电脑通过路由器与互联网的通信IP方式
    • PC机与三菱PLC通信问题,高手进来看看

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有