FreeRtos线程和void *强制转换

时间:2016-01-10 22:11:04

标签: c++ multithreading freertos

我想用以下函数启动一个线程:

void walkThread(void const *argument)
{
    Gait* gait = const_cast<Gait*>(static_cast<const Gait*>(argument));
    gait->print();
    for(;;)
    {
        osDelay(1000);
    }
}

void Gait::print()
{
    printf("%i\r\n", m_stopped);
}

演员似乎给了我一个不好的步态地址。打印功能应打印“0”(m_stopped已初始化),但它会打印一个随机数。

我通过将“this”作为参数来启动这样的线程。

osThreadDef(WalkThread, walkThread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE+500);
osThreadCreate(osThread(WalkThread), this);

这里有什么不对吗?我应该去别的地方看看吗?

0 个答案:

没有答案