Arduino lambdas"没有合适的转换函数"错误

Arduino lambdas 'no suitable conversion function from' error

本文关键字:转换 函数 错误 lambdas Arduino      更新时间:2023-10-16

我有一个使用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 中删除状态并以某种方式恢复它,或者通过将函数转换为模板来更改函数以接受任何可调用对象。