我一直在尝试重构一些代码,最终在使用带有参数 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);
回调函数的类型应该是不带参数的函数。这意味着无法向其传递参数。
您唯一的选择是将函数更改为不带参数,并将参数放入函数将读取的全局变量中。