-迂腐的警告和pthread_create

-pedantic warning and pthread_create

本文关键字:pthread create 警告      更新时间:2023-10-16

我是ansi和iso世界的新手,我用编译了我的程序

-asni -pedantic -std=c++11 -std=c++98 

现在,我收到以下警告:

 warning: converting from 'void (NetworkSocket::*)()' to 'void* (*)(void*)' [-pedantic]

对于以下线路:

if (pthread_create(this->threadArray, NULL, (void*(*)(void*)) &NetworkSocket::threadProcedure  , (void *)this) != 0)
        { /* error */      }

我怎样才能通过迂腐的警告?

pthread_create是一个C函数,期望C函数接受一个void指针,并返回一个void指示器。所以,若您使用这个指针作为线程参数,您可以使用这样一个C函数来将调用分派给您的成员函数:

extern "C" void* startThread( void* p )
{
    static_cast< NetworkSocket* >( p )->threadProcedure();
    return 0;
} 
if ( pthread_create( this->threadArray, 0, startThread, this ) )
   ...