Callback-Funktionen sind Funktionen in C -Programmiersprache. Ein Callback-Funktion hilft bei der Eingrenzung der Umsetzung einer Library-Funktion aus der Anruferliste der Bibliothek. Dadurch, dass die Bibliothek kann nun unabhängig ohne Kenntnis der Anwendung, die gehen, um die Library-Funktion aufrufen entwickelt werden. Dies hilft bei der Erzeugung von kompakten Code . Ferner hilft es auch in die parallele Entwicklung , wie die Person schriftlich die Bibliothek muss nicht warten, bis die Person schriftlich die Anwendung, und umgekehrt. Things You
AC Compiler gcc wie
Editor wie emacs oder "vi" brauchen , um das Programm zu schreiben
anzeigen Weitere Anweisungen
Callback-Funktionen
1
Erfahren Sie in C-Code mit Funktionszeiger schreiben. Funktionszeiger sind wie alle anderen Zeiger in C, außer dass sie die Adresse einer Funktion zu halten. Das Code-Segment unten ist ein einfaches Beispiel mit Funktionszeiger .
# Include int
printHello () {
printf (" Hallo \\ n" ); }
int printHi () {
printf (" Hallo \\ n"); }
int main (int argc , char * argv [ ] ) {
//Deklariert eine Funktion pointer
int ( * p) (void);
//Point die Funktion Zeiger an die Adresse einer Funktion
p = printHello ;
p ();
//Point die Funktion Zeiger auf die Adresse einer anderen Funktion
p = printHi ;
p (); }
2
Entscheiden Sie, was entsprechende Callback-Funktion für das Programm ist . Beispielsweise vergleicht der folgende Code-Segment entweder zwei Zahlen oder zwei Zeichenketten in Abhängigkeit vom Wert des dritten Arguments als " Option ". Wenn zwei ganze Zahlen sind , die verglichen werden , gibt die Funktion einen Wert von 1 , wenn die erste Anzahl größer ist als die andere. Wenn zwei Zeichenketten verglichen werden, liefert die Funktion einen Wert von 1 , wenn die erste Zeichenkette hat mehr Zeichen als die zweite.
Int Callback (void * a, void * b , int option ) {
if ( Option == 0) {
int * c = (int *) a;
int * d = (int *) b;
Rückkehr (* c > * d);
} else if (option == 1) {
char * c = (char *) a;
char * d = (char *) b;
return ( strlen ( c ) > strlen ( d) ); }
}
3
Rufen Sie die Callback-Funktion aus dem Quellcode . Angenommen, ein Bubble- Sort-Algorithmus wird von einem Programmierer geschrieben. Dieser Algorithmus sortiert die Werte in einer Liste in absteigender Reihenfolge . Der folgende Code -Segment ruft die Callback-Funktion namens " Funktion " , die den Vergleich tun.
Int BubbleSort (int *-Werte , int len , int ( * func) (void * a, void * b , int c )) {
int ( * p) ( void * m, void * n , int p);
int i , j;
p = func ;
for (i = 0; i < len ; i + +) {
for (j = 0; j < i; j + +) {
if ( p ( & Werte [ ,"i] , & values [j] , 0)) {
int t = Werte [i] ;
Werte [i] = Werte [j] ;
Werte [ ,"j] = t ;
} }
} }
4
Rufen Sie die Funktion, die die Callback aufruft Funktion aus dem Hauptprogramm, das das Ergebnis der Art erfordert . Für die Bubble -sort Beispiel ruft das "Haupt"- Funktion der Blase -sort -Funktion mit der Callback-Funktion in Schritt 2 angegeben .
Int main ( int argc , char * argv [ ] ) {
< p> int i;
int a [5] = { 4, 2, 5, 9, 1} ;
BubbleSort (a, 5, Rückruf) ;
for (i = 0; i < 5 ; i + +) {
printf (" % d \\ n", a [i] ); }
}