J'utilise C ++ sur ESP-32. Lors de l'enregistrement d'une minuterie, je dois faire ceci:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
Ici, la minuterie appelle soundCallback
.
Et la même chose lors de l'enregistrement d'une tâche:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
La méthode est donc démarrée dans une tâche séparée.
GCC m'avertit toujours de ces conversions, mais cela fonctionne comme prévu.
Est-ce acceptable dans le code de production? Y a-t-il une meilleure manière de faire cela?
std::bind
N'assume pas également le pointeur d'objet comme premier argument de méthode?