“Conocimientos Programación>C /C + + Programming

Cómo utilizar la función de devolución de llamada en C

2012/3/19
funciones de devolución de llamada son características avanzadas en lenguaje de programación C . Una función de devolución de llamada de ayuda en el aislamiento de la aplicación de una función de biblioteca de la persona que llama de la biblioteca . Al hacer esto , la biblioteca ahora se puede desarrollar de forma independiente y sin ningún conocimiento de la aplicación que se va a llamar a la función de la biblioteca . Esto ayuda en la generación de código compacto . Además , también ayuda en el desarrollo paralelo, como la persona que escribe la biblioteca no tiene que esperar a que la persona que escribe la aplicación , y viceversa. Cosas que necesitará sobre AC como compilador gcc
editor como emacs o " vi " para escribir el programa
Ver Más instrucciones
funciones Callback
1

Aprender a escribir código C con punteros a funciones . Punteros de función son como cualquier otro punteros en C, excepto que tienen la dirección de una función . El segmento de código siguiente es un ejemplo sencillo con punteros a funciones .

# Include

int printHello () {

printf ("Hola \\ n " ) ;

}

int printHi () {

printf ( "Hola \\ n"); }


int main (int argc, char * argv [ ] ) {

//Declara un puntero a función

int ( * p) ( void);

//Apunte el puntero de función a la dirección de una función

p = printHello ;

p ();

//Apunte el puntero de función a la dirección de otra función

p = printHi ;

p (); }


2

Decida cuál es la función de devolución de llamada es apropiado para el programa . Por ejemplo , el segmento de código siguiente se comparan o bien dos números enteros o dos cadenas de caracteres en función del valor del tercer argumento llamado " opción . " Si se comparan dos números enteros , la función devuelve un valor de 1 si el primer número es mayor que el otro . Si se comparan dos cadenas de caracteres , la función devuelve un valor de 1 si la primera cadena de caracteres tiene más caracteres que el segundo .

Int callback (void * a , void * b , int opcion ) {

if ( option == 0 ) {

int * c = (int *) a;

int * d = (int *) b;

regreso ( c * > * d ) ;

} else if ( option == 1 ) {

char * c = (char *) a;

char * d = (char *) b;

regreso ( strlen ( c ) > strlen ( d )); }


}
3

Llame a la función de devolución de llamada desde el código fuente . Supongamos que un algoritmo de burbuja especie está siendo escrito por un programador. Este algoritmo ordena los valores en una lista en orden decreciente . El siguiente segmento de código llama a la función callback llamada " función ", que va a hacer la comparación.

BubbleSort int ( int * Valores , 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 ( y valores [ ,"i ], y los valores de [j ] , 0 )) {

int t = valores [ i] , valores


[ i ] = valores [j] ;
valores

[ ,"j ] = t;


} } }


}
4

Llame a la función que invoca la devolución de llamada función del programa principal que requiere el resultado de la ordenación . Para el ejemplo de la burbuja - tipo , la función "main " llama a la función bubble -sort con la función de devolución de llamada especificado en el paso 2 .

Int main (int argc, char * argv [ ] ) {
< p > int i ;

int a [ 5 ] = { 4 , 2 , 5 , 9 , 1 } ;

bubbleSort (a, 5 , devolución de llamada ) ;

for (i = 0 ; i < 5 ; i + + ) {

printf ("% d \\ n", a [i ] ) ; }


}

C /C + + Programming
¿Cómo revertir los elementos de una matriz en C
Cómo configurar Joomla Depurar en Eclipse
Cómo depurar una pérdida de memoria en C + +
Cómo utilizar los tipos de datos en C + +
Cómo crear un único subproceso en CPP
Cómo convertir Ttf Fuente para PCL
Cómo convertir un número a un personaje usando C + +
Cómo hacer una ventana divisora ​​personalizado en MFC
Conocimientos Informáticos © http://www.ordenador.online