C++ Arduino lambdas';没有适用于'的转换函数;错误

C++ Arduino lambdas';没有适用于'的转换函数;错误,c++,lambda,arduino,C++,Lambda,Arduino,我有一个使用lambas的小Arduino项目: typedef void(*keyboardKeyDelegate)(int); void KeyboardKeyChange(int button, keyboardKeyDelegate onKeyChange); void KeyboardKeyChange(int button, keyboardKeyDelegate onKeyChange) { // code... } void KeyboardKeyClick(int

我有一个使用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

也许有人知道更多关于这个错误的信息,并帮助我解决它。

您的lambda有状态,因此不能像函数参数那样转换为函数指针

您需要从lambda中删除状态并以某种方式恢复它,或者通过将其转换为模板来更改函数以接受任何可调用