【问题标题】:How to make void (**)() from void()?如何从 void() 生成 void (**)()?
【发布时间】:2023-02-01 16:12:57
【问题描述】:

具有功能:

void btCallback(esp_spp_cb_event_t event, esp_spp_cb_param_t *param) { 
  // ...
}

需要用在:

BT.register_callback(btCallback);

编译器错误:

no known conversion for argument 1 from 'void(esp_spp_cb_event_t, esp_spp_cb_param_t*)' to 'void (**)(esp_spp_cb_event_t, esp_spp_cb_param_t*)'

据我了解,他需要一个指向函数指针的指针。我不知道如何创建它。我试过函数指针(通过&),不适合。

附言是 arduino-esp32 BluetoothSerial::register_callback 函数。

【问题讨论】:

标签: c++ arduino arduino-esp32 platformio


【解决方案1】:

您需要创建一个指针变量,然后使用 & 运算符从中获取一个指针。

void f()
{
    // ...
}

void g(void (**p)())
{
    // ...
}

int main()
{
    void (*f_ptr)() = f;
    g(&f_ptr);
}

试试here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-02
    • 2012-09-14
    • 2017-06-30
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多