Sobes.tech
Junior

O que são funções de retorno de chamada?

sobes.tech IA

Resposta da IA

Função passada para outra função como argumento. A função que a chama pode então executar a função passada em um momento específico ou quando ocorrer um evento específico.

Aplicações:

  • Manipulação de eventos (GUI, eventos do sistema)
  • Operações assíncronas
  • Estratégias de comportamento
  • Algoritmos genéricos

Exemplo:

C:

#include <stdio.h>

// Tipo de ponteiro para função que aceita um int e retorna void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Fazendo algo com o valor: %d\n", value);
    if (callback != NULL) {
        callback(value); // Chamada à função de retorno
    }
}

void my_callback_function(int data) {
    printf("Função de retorno executada com o valor: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Sem função de retorno
    return 0;
}

C++:

#include <iostream>
#include <functional> // Para std::function

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Fazendo algo com o valor: " << value << std::endl;
    if (callback) { // Verificação da existência de função de retorno
        callback(value); // Chamada à função de retorno
    }
}

void my_callback_function(int data) {
    std::cout << "Função de retorno executada com o valor: " << data << std::endl;
}

int main() {
    do_something_with_callback(10, my_callback_function);

    // Função lambda como retorno de chamada
    do_something_with_callback(20, [](int data) {
        std::cout << "Retorno de chamada lambda executado com o valor: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Sem função de retorno

    return 0;
}