Sobes.tech
Junior

Cosa sono le funzioni di callback?

sobes.tech AI

Risposta dell'AI

Funzione passata a un'altra funzione come argomento. La funzione chiamante può quindi eseguire la funzione passata in un momento specifico o al verificarsi di un evento specifico.

Applicazioni:

  • Gestione degli eventi (GUI, eventi di sistema)
  • Operazioni asincrone
  • Strategie di comportamento
  • Algoritmi generici

Esempio:

C:

#include <stdio.h>

// Tipo di puntatore a funzione che accetta un int e restituisce void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Facendo qualcosa con il valore: %d\n", value);
    if (callback != NULL) {
        callback(value); // Chiamata alla funzione di callback
    }
}

void my_callback_function(int data) {
    printf("Funzione di callback eseguita con il valore: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Senza funzione di callback
    return 0;
}

C++:

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

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Facendo qualcosa con il valore: " << value << std::endl;
    if (callback) { // Verifica della presenza di funzione di callback
        callback(value); // Chiamata alla funzione di callback
    }
}

void my_callback_function(int data) {
    std::cout << "Funzione di callback eseguita con il valore: " << data << std::endl;
}

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

    // Funzione lambda come callback
    do_something_with_callback(20, [](int data) {
        std::cout << "Callback lambda eseguito con il valore: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Senza funzione di callback

    return 0;
}