Forum: PC-Programmierung Bedeutung von Callback-Funktionen


von hans (Gast)


Lesenswert?

Guten Morgen, welche Bedeutung hat die sogenannten Callback-Funktion?
Wozu wird sowas benötigt?

von P. S. (Gast)


Lesenswert?

Wie waere es, wenn du deine Hausaufgaben selbst googlen wuerdest? Dann 
haettest du 5 Sekunden spaeter eine umfassende Antwort gehabt...

von Roland Praml (Gast)


Lesenswert?

Um dich von einen Programmteil über getane Arbeit informieren zu lassen.
(Vgl. mit Interrupt)

Angenommen du willst eine Webseite abholen so kannst du das synchron 
oder asynchron machen. z.b. so


http.mode = SYNC
http.get("http://www.xyz.de/";) ' hier wird gewartet
print http.data ' diese Zeile wird erst nach dem Holen ausgeführt


ODER

http.mode = ASYNC
http.onComplete = myFunc
http.get("http://www.xyz.de/";) ' hier wird gewartet
print "wir können sofort weiter machen"


myFunc( caller ) {
  print caller.data ' Diese Zeile wird "irgendwann" ausgeführt. Das 
restl. Programm bekommt davon normalerweise nichts mit
}

Gruß
Roland

von Thomas K. (muetze1)


Lesenswert?

Ein anderes Beispiel ist die EnumWindows() Funktion der WinAPI. Diese 
nimmt mit einem Parameter eine Callback Funktion an welche dann 
innerhalb des EnumWindows() Aufrufes mit jedem einzelnen verfügbaren 
Fenster und dessen Daten aufgerufen wird. Da du die Funktion beim 
EnumWindows() Aufruf mitgibst, kannst du in dieser das ganze steuern - 
d.h. auch abbrechen. Der Rückgabewert in der Callback Funktion regelt 
das fortführen oder beenden der Callback Aufrufe. Näheres dazu in der 
MSDN.

von hans (Gast)


Lesenswert?

Danke für eure Hilfe. Ich suche dazu ein kleines Beispielprogramm für 
Microsoft Visual C++.

von Karl H. (kbuchegg)


Lesenswert?

Dann nimm qsort().
Das ist Standard-C und benutzt einen Callback für die 
Vergleichsfunktion.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.