Передача Лямбды C++ в С API
Имею СИ API ассинхронное, которое требует передачи функций обратного вызова(вызов функций в отдельном потоке). Допустимо объявить лямбду в требуемой сигнатуре на стеке и передать ее параметром в си вызов? Лямбда ничего не захватывает. Правильно ли я понимаю, что на адрес метода не влияет время жизни лямбды. Для примера код:
C API:
typedef void ( *Callback_t )( uint8_t*, int );
int make_request(Callback_t clbck); // Колбек будет вызван в другом потоке и произвольное время
C++
class MyCWrapper {
int request() {
auto lambda = [](uint8_t* buf, int size) {
for(int i = 0; i < size; i++) {
std::cout<< buf[i] << ','
}
};
return make_request(lambda);
}
};