Я использую xTaskCreate во FreeRTOS, чей 4-й параметр (void * const) является параметром для передачи в функцию, вызванную новым потоком.
void __connect_to_foo(void * const task_params) {
void (*on_connected)(void);
on_connected = (void) (*task_params);
on_connected();
}
void connect_to_foo(void (*on_connected)(void)) {
// Start thread
xTaskCreate(
&__connect_to_foo,
"ConnectTask",
STACK_SIZE,
(void*) on_connected, // params
TASK_PRIORITY,
NULL // Handle to the created Task - we don't need it.
);
}
Мне нужно передать указатель на функцию с подписью
пустая полоса ();
Но я не могу понять, как привести void * к указателю на функцию, который я могу вызвать. Ближайшее, что я могу получить, это:
ошибка: 'void *' не является указателем на тип объекта в строке 3
Как я могу привести task_params к указателю на функцию, который я могу вызвать?
Обратите внимание: приведенный выше код значительно упрощен.