Я использую C ++ на ESP-32. При регистрации таймера я должен сделать это:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
Здесь таймер звонит soundCallback
.
И то же самое при регистрации задачи:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
Таким образом, метод запускается в отдельной задаче.
GCC всегда предупреждает меня об этих преобразованиях, но работает так, как и планировалось.
Это приемлемо в производственном коде? Есть лучший способ это сделать?
std::bind
Также не принимает указатель объекта в качестве первого аргумента метода?