Sobes.tech
Junior

¿Qué son las funciones de devolución de llamada?

sobes.tech AI

Respuesta de la IA

Función que se pasa a otra función como argumento. La función que llama puede ejecutar la función pasada en un momento determinado o cuando ocurra un evento específico.

Aplicaciones:

  • Manejo de eventos (GUI, eventos del sistema)
  • Operaciones asíncronas
  • Estrategias de comportamiento
  • Algoritmos genéricos

Ejemplo:

C:

#include <stdio.h>

// Tipo de puntero a función que acepta un int y devuelve void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Haciendo algo con el valor: %d\n", value);
    if (callback != NULL) {
        callback(value); // Llamada a la función de retorno
    }
}

void my_callback_function(int data) {
    printf("Función de retorno ejecutada con el valor: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Sin función 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 << "Haciendo algo con el valor: " << value << std::endl;
    if (callback) { // Verificación de la existencia de la función de retorno
        callback(value); // Llamada a la función de retorno
    }
}

void my_callback_function(int data) {
    std::cout << "Función de retorno ejecutada con el valor: " << data << std::endl;
}

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

    // Función lambda como devolución de llamada
    do_something_with_callback(20, [](int data) {
        std::cout << "Devolución de llamada lambda ejecutada con el valor: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Sin función de retorno

    return 0;
}