当前位置:  技术问答>linux和unix

请高手帮我看一下,函数指针为何转换失败?

    来源: 互联网  发布时间:2015-09-20

    本文导语:  请高手帮偶看一下,为什么提示函数指针转换失败? 先说明一下,因为要在PacketCapturer::start()中创建多线程来进行完成函数回调,偶用的是POSIX。 本来可以直接在PacketCapturer::start()中直接调用pktHandler所指向的函数来...

请高手帮偶看一下,为什么提示函数指针转换失败?

先说明一下,因为要在PacketCapturer::start()中创建多线程来进行完成函数回调,偶用的是POSIX。
本来可以直接在PacketCapturer::start()中直接调用pktHandler所指向的函数来直接完成的,但是
由于POSIX中pthread_create所定义的接口和pktHandler不同的缘故,不能直接在PacketCapturer::start()中调用,我于是在PacketCapturer中增加了了一个私有成员函数loadHandler来实现pktHandler接口到pthread_create接口的转换,也就是如下面代码所写的那样做的,可是编译
提示

packetcapturer.cpp:333: no matches converting function 'loadHandler' to type 'void*(*)(void*)'
packetcapturer.h:79: candidates are: void* PacketCapturer::loadHandler(void*)

也就是说接口的转换失败了,可是我检查了loadHandler的定义完全满足pthread_create中第三个
参数,也就是函数指针的定义,为何还是失败,请帮我看看,万分感谢~

这些是定义:
int pthread_create(pthread_t* thread, pthread_attr* attr, void* (*start_routine)(void*), void* arg);

typedef void (*pktHandler)(const u_char* pkt);

class PacketCapturer {
  private:  void *loadHandler(void *ph);
}

这些是实现:
void* PacketCapturer::loadHandler(void *ph) {
  (*((pktHandler)ph))(this->pkt);
  return NULL;
}

调用(在PacketCapturer::start()中执行的):
line 333:  pthread_create(&thr, NULL, this->loadHandler, *h);

编译错误:
packetcapturer.cpp:333: no matches converting function 'loadHandler' to type 'void*(*)(void*)'
packetcapturer.h:79: candidates are: void* PacketCapturer::loadHandler(void*)

|
是不是宏定义有问题,但一时又看不出来,贴完整一些看看

|
你的pktHandler可能要定义成
typedef (void*) (*pktHandler)(const u_char* pkt);

|
void* (*)(void*)
typedef void (*pktHandler)(const u_char* pkt);
两个确实不一致,老关也许是对的

|
就这个,贴上来看看

    
 
 

您可能感兴趣的文章:

  • 关于指针变量,struct 变量,指针使用的一些疑惑,望高手指教
  • 我刚刚安装了Fedora7,但却没有鼠标指针,但却可以使用.不知道为什么?请求高手指点?谢谢!
  • 100分请教高手I2C驱动的clock指针的问题
  • JAVA中的引址和C++中的指针有什么区别??高手向教!!
  • 想建立一个指向结构体的指针数组,但编译不过,望高手指点!
  • 有高手对空指针错有研究吗(197分~~~)NullPointerException
  • 求助C高手,线程和函数指针的问题。
  • 学习内核(赵博分析的那一版本)时,不理解empty_dir(namei.c中)指针转换,请高手指点
  • 高手帮帮忙!vi中如何实现跳转到任意结构体或函数的声明处,包括系统库中声明的函数和数据结构?
  • 高手指点,关于库函数的问题,着急啊
  • 100分请教高手一个bash函数
  • 关于linux内核的ioctl函数,请高手指点一下
  • 请问高手,如何用linux操作系统里的标准c函数获取bios时间,高分!!!!
  • 小弟请教各位高手,在JAVA中通过什么函数能获得Button的标签内容?
  • linux下time函数问题请教高手
  • 请那位高手详细解释一下wait函数的用法和意义?
  • 高手帮解答:数学基本库函数的源码问题.请你吃烤鸭
  • Linux编程 怎么调用另一个文件中的函数 求高手指点!!!
  • 高手请进:请问用response.sendRedirect()函数传递的中文参数如何正确识别?
  • 关于select函数,请高手指教。在线等 分不够加!!
  • 关于backtrace 函数,请高手指点
  • 不是高手的也知道,关于时间的库函数,帮帮我,谢谢了
  • 关于select函数,请高手指教。在线等 分不够加!!
  • awk调用函数的问题,请高手帮忙解答
  • 写了个简单的回调函数,望高手指点
  • 求高手解答,程序在main函数退出之后core了!
  • 各位高手:java是不是不支持缺省参数。为什么我在写一个类的构造函数时,加入缺省参数出现错误。
  • 关于stdio.h中的函数,请高手帮忙!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux启动加载时有几个挂载文件系统失败,请高手指教!
  • 求高手帮看看,编译hello驱动模块失败
  • 高手求救,在windows下访问linux服务器时使用如\192.168.100.1,但是访问失败,问在linux上要怎么设置啊
  • 64位机Linux下启动.sh文件失败,报错信息“已放弃”,求高手
  • redhat linux 9 下面安装FreeTDS失败,请教高手。给100分!
  • 向高手求助一个简单问题:为什么我在linux上的socket编程bind失败,告诉是权限不允许?
  • 安装X264失败,高手帮我看看是什么原因
  • 【求助】system()命令执行失败,请高手帮忙解决,谢谢!
  • dhcpd 启动失败 高手求救
  • 第四次安装redhat7.3失败,高手帮一下忙!!!
  • VMware虚拟机linux系统,在启动的时候弹出eth0的时候失败了。进入系统的时候,输入ifconfig没有IP,这是什么情况???那位高手帮帮忙,不甚感激
  • 【诚意求救】小弟一台Web服务器上ProFTP服务启动失败,现给出错误信息,求助于高手
  • 【诚意求救】小弟一台Web服务器上ProFTP服务启动失败,现给出错误信息,求高手分析原因
  • [ 高手进来研究一下 ] malloc() 失败,并系统调用abort() 从而使程序退出,如何解决?
  • 安装skyeye失败,请教高手,回帖有分
  • 加载helloworld模块失败请高手帮忙!
  • CENTOS 4.x 安装freetype失败.请高手帮我解决问题.谢谢.
  • rh9.0什级到2.6.5屡次失败,请高手指教?
  • 请教一下各位高手,为什么fifo管道在线程内总是write失败?
  • AIX 版本 5300-01-00 登录CDE失败的问题,在线等,请高手指教
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • 高手指点,关于库函数的问题,着急啊 iis7站长之家
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3