如何将具有多个参数的函数作为回调/函数指针传递?

问题描述 投票:0回答:1

我一直在尝试重构一些代码,最终在使用带有参数 foo(unsigned long, int, int[]) 的函数调用 Thread.onRun( (*callback) () ) 函数时偶然发现了一个问题

我尝试使用函数指针作为几个问题/教程所示,但所有这些都会导致错误

“无法使用 void 类型的右值初始化 void(*)() 类型的参数”:

 void (*fooPointer)(unsigned long, int, int[]) = foo;
 thread.onRun( fooPointer(longVar, intVar, intListVar));

请注意,这在没有参数的函数中工作得很好:

 thread.onRun(func);
c++ arduino function-pointers
1个回答
0
投票

回调函数的类型应该是不带参数的函数。这意味着无法向其传递参数。

您唯一的选择是将函数更改为不带参数,并将参数放入函数将读取的全局变量中。

© www.soinside.com 2019 - 2024. All rights reserved.