Was ist Callback?

Tutankhseth

Mitglied
Hi,

ich verstehe einfach nicht was es mit Callback-Funktionen auf sich hat. Kann mir jemand erklären wozu die gut sind und wie man sie benutzt?
 
Callback-Funktionen sind (meist selbstgeschriebene) Funktionen, die man per Zeiger an meist fremde, z.B. API-Funktionen übergibt, damit diese Funktionen die eigene Funktion aufrufen können. Ein Beispiel dafür ist eine Vergleichsfunktion, die an die Sort-Methode eines Listenkontrollelements übergeben wird.
 
Zuletzt bearbeitet:
Ich habe etwas mit Timern rumprobiert und da gibt es die Möglichkeit eine Callback Funktion zu übergeben:
SetTimer(TIMER_ID, 1000, Callback);
Das heisst dann das alle 1000 Millisekunden die Callback Funktion aufgerufen wird wenn ich das richtig verstanden habe, oder?
 
Ja, genau.

Mit MFC geht es aber auch noch etwas komfortabler. Da kannst du beispielsweise einem Dialog einen "OnTimer"-Handler geben. Das ist natürlich letzten Endes dasselbe, aber man kann es einfacher einbauen.
 
was ist dann der Vorteil

wenn ich richtig verstanden habe, callback funktion ist quasi aufruf einer funktion in einer anderer funktion. das kann ich auch separat schreiben, lasse eine function komplett durchlaufen, dann übergebe das return-value als parameter in andere funktion. was ist dann der vorteil, callback funktion zu benutzen.

und API funktion von windows sind die vordefinierte funktionen?
 
@netrobot:

Wie gesagt, stell dir vor, du willst ein Array sortieren, bist aber nicht in der Lage dir selbst einen Sortieralgorithmus zu schreiben und greifst deshalb auf einen bereits implementierten zu.
Woher zum Teufel kennt die Funktion deine Sortierkriterien? Du schreibst also dir in dem Falle eine Funktion, die 2 Elemente überreicht bekommt und dann einen Integerwert zurück gibt, der festlegt, in welcher Reihenfolge diese beiden Elemente angeordnet werden sollen, sowas geht NUR über Callbackfunktionen.
Nen anderes Beispiel wäre die Windowprocedure eines normalen Fensters, die die Systemnachrichten abarbeitet. :rolleyes:
 
Im Prinzip richtig. Ich würde noch Folgendes anmerken:

Du schreibst also dir in dem Falle eine Funktion, die 2 Elemente überreicht bekommt und dann einen Integerwert zurück gibt, der festlegt, in welcher Reihenfolge diese beiden Elemente angeordnet werden sollen, sowas geht NUR über Callbackfunktionen.

Ersteres könnte man auch anschaulich als Vergleichsfunktion bezeichnen.
Letzteres stimmt nur im Fall von C, da man mit C++ auch die Möglichkeit hat, Funktoren (Funktions-Objekte) zu übergeben.
 

Neue Beiträge

Zurück