我在 FreeRTOS 中使用 xTaskCreate,其第四个参数 (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* 转换为我可以调用的函数指针。我能得到的最接近的是:
错误:第 3 行上的“void*”不是指向对象的指针类型
如何将 task_params 转换为我可以调用的函数指针?
注意上面的代码被大大简化了。
沿着这些思路:
typedef void (*OnConnected_t)();
OnConnected_t on_connected = OnConnected_t(task_params);
on_connected();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)