我有一个使用lambas的小型Arduino项目:
typedef void(*keyboardKeyDelegate)(int);
void KeyboardKeyChange(int button, keyboardKeyDelegate onKeyChange);
void KeyboardKeyChange(int button, keyboardKeyDelegate onKeyChange)
{
// code...
}
void KeyboardKeyClick(int button, keyboardKeyDelegate onClick);
void KeyboardKeyClick(int button, keyboardKeyDelegate onClick)
{
// code...
}
..下一个
bool r = true;
KeyboardKeyClick(KB_TOP, [&r](int state)
{
r = !r;
Serial.println("> KB_TOP CLICKED");
});
编译源代码时出错:
no suitable conversion function from "lambda []void (int state)->void" to "keyboardKeyDelegate" exists
也许有人对此错误了解更多,并帮助我弄明白。
答案 0 :(得分:0)
你的lambda有状态,因此不能转换为函数指针,如函数参数。
你需要从lambda中删除状态并以某种方式恢复它,或者通过将其转换为模板来更改函数以接受任何可调用的函数。