1

我正在尝试在 SDL 中创建一个线程。我已按照我可以在网上找到的所有说明进行操作,但我不断收到此错误:

SDL\sample_profiler.cpp|72|错误:从 'int' 到 'int ( )(void )' 的无效转换 [-fpermissive]|

以下是我创建线程的代码:

void sample_profiler::run()
{
    if (m_the_game_world->level_load())
    {
        SDL_Thread *l_thread;
        l_thread = SDL_CreateThread(thread_run(m_the_game_world), "sample_thread",(void *)NULL);

    }
}

以下是我的头文件中的函数: int thread_run(void *p_the_game_world);

4

1 回答 1

0

问题是函数调用 SDL_CreateThread() 的第一个参数。SDL_CreateThread() 需要一个函数指针。您所做的是调用该函数并将其结果(int)作为第一个参数传递。

这将是一个正确的调用:

int Test( void* p )
{
    return 0 ;
}

SDL_Thread* id = SDL_CreateThread( Test , "test" , ( void* )NULL );
于 2014-05-10T12:32:08.123 回答