Sobes.tech
Junior

Was sind Callback-Funktionen?

sobes.tech KI

Antwort von AI

Funktion, die an eine andere Funktion als Argument übergeben wird. Die aufrufende Funktion kann die übergebene Funktion zu einem bestimmten Zeitpunkt oder bei einem bestimmten Ereignis ausführen.

Anwendungen:

  • Ereignisbehandlung (GUI, Systemereignisse)
  • Asynchrone Operationen
  • Verhaltensstrategien
  • Allgemeine Algorithmen

Beispiel:

C:

#include <stdio.h>

// Funktionszeigertyp, der einen int akzeptiert und void zurückgibt
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Etwas mit dem Wert machen: %d\n", value);
    if (callback != NULL) {
        callback(value); // Aufruf der Rückruffunktion
    }
}

void my_callback_function(int data) {
    printf("Rückruffunktion ausgeführt mit Wert: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Ohne Rückruffunktion
    return 0;
}

C++:

#include <iostream>
#include <functional> // Für std::function

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Etwas mit dem Wert machen: " << value << std::endl;
    if (callback) { // Überprüfung auf Vorhandensein der Rückruffunktion
        callback(value); // Aufruf der Rückruffunktion
    }
}

void my_callback_function(int data) {
    std::cout << "Rückruffunktion ausgeführt mit Wert: " << data << std::endl;
}

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

    // Lambda-Funktion als Rückruf
    do_something_with_callback(20, [](int data) {
        std::cout << "Lambda-Rückruf ausgeführt mit Wert: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Ohne Rückruffunktion

    return 0;
}