mikrocontroller.net

Forum: PC-Programmierung Bedeutung von Callback-Funktionen


Autor: hans (Gast)
Datum:

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

Autor: P. S. (Gast)
Datum:

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

Autor: Roland Praml (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas K. (muetze1)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hans (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.