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

ANSI C++ forbids implicit conversion from `void *' in argument passing

    来源: 互联网  发布时间:2015-11-04

    本文导语:  用arm-linux-g++ server.c -ljrtp -lpthread -o server编译程序,因为用到c++写的jrtp库,所以必须用g++编译,可总是出现  ANSI C++ forbids implicit conversion from `void *' in argument passing 的错误。 出错函数: pthread_create(&id,NULL,(vo...

用arm-linux-g++ server.c -ljrtp -lpthread -o server编译程序,因为用到c++写的jrtp库,所以必须用g++编译,可总是出现
 ANSI C++ forbids implicit conversion from `void *' in argument passing
的错误。
出错函数:
pthread_create(&id,NULL,(void*)thread,NULL);

这个函数用gcc编译没有问题。
请高手指点。

|
这样写

pthread_create(&id, NULL, (void*(*)(void*))thread, NULL);

而且根本不该用dynamic_cast,要用也是static_cast(又不是包含虚函数的类的指针/引用,怎么能用dynamic_cast呢?楼主的C++应该加强加强了)

|
void *(*start_routine)(void*)就是需要的函数原型。
void* thread(void*)
{
 ...
}

|
pthread_create(&id,NULL,(void*)thread,NULL);
(void*)thread错误。C++禁止将void*隐式转换为其它类型,就象你这里,要将((void*)thread)在传递函数参数时隐式转换为 void *(*start_routine)(void*)函数指针类型,所以是错误的。
去掉(void*)强制转换。直接传递thread试试。如果thread原型正确,不需要转换。

|
ISO/IEC 14882不准这么干,但是ISO/IEC 9899:1999是允许的。C++强制所有的void*到其他类型的转换都要加上强制转换的操作符。

|
楼主,thread定义不对。

|
这里的情况连static_cast也不能用……必须用reinterpret_cast才行……

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 讨论unix c/c++,有什么书推荐?与Ansi c/c++有区别吗?
  • hpux下cc不支持ANSI C语法吗?
  • 关于ANSI C!
  • linux下信号11 (Segmentation violation (ANSI))是何种错误,急!急!急!急!
  • 终端类型 VT100 ANSI 是什么
  • 寻求工作,本人熟练掌握ANSI CC++语言、熟悉UNIX
  • findfirst,findnext,findclose是不是ANSI C函数
  • redhat linux支持什么标准? POSIX, ANSI,SVR4?
  • Unicode与ANSI对于操作系统的影响
  • 如何用ANSI C来获取操作系统文件系统使用率?
  • 如何自动建立多级路径ANSI C
  • 求FTP客户端源程序(Ansi C, Berkeley Socket)
  • 如何自动建立多级路径ANSI C iis7站长之家
  • ASCII/ANSI转字符串的问题
  • linux下怎以将windowsxp的记事本保存的ansi格式的文件转换成linux下的utf8格式文件呀???
  • 浅析内存对齐与ANSI C中struct型数据的内存布局


  • 站内导航:


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

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

    浙ICP备11055608号-3