Función de devolución de llamada en C

Función de devolución de llamada en C
Una devolución de llamada en el lenguaje de programación C es una función basada en eventos que pasa una función a otra función como argumento. Simplemente la función de devolución de llamada es cuando se pasa una referencia de una "función 1" como argumento a "función 2" utilizando un puntero de función. Esa función utiliza esa referencia para llamar "Función 1". Este artículo proporcionará algunas ilustraciones sobre el uso de una función de devolución de llamada en el lenguaje de programación C

Sintaxis

Para usar la función de devolución de llamada, tendremos que declarar e inicializar el puntero de la función en la función principal. Declaración del puntero de función/La sintaxis de inicialización se define aquí:

[ReturnType-of-the-llamefuntion] (*[Pointer-Name]) ([CallingFunction's-Parameters]) = & [CallingFunction-Name];

Después de la declaración/inicialización del puntero de la función, pasaremos el puntero a la función deseada de la manera siguiente adjunta:

[Nombre de la función deseada] ([cualquier otro parámetro de función], Nombre del puntero);

La firma de definición/inicialización de la función de la función que recibe ese argumento será así:

[ReturnType] [function-name] ([Any-Other-Function-Parameter], [returnType-de-llame-function] (*[Pointer-Name]) ([Calling-Function's-Parameters]))

Por fin, llamar a esa función usando ese puntero aprobado se muestra aquí:

[Pointer-Name] (That-Function's-Parameters);

La teoría podría ser un poco confusa. Sin embargo, la implementación de los ejemplos lo ayudará a limpiar esas confusiones.

Ejemplo 1:

En nuestro primer ejemplo, crearemos una función de devolución de llamada simple. Que no devuelve nada y no toma parámetros. Para limpiar nuestros conceptos recién aprendidos implementándolos. Todo lo que necesita hacer es crear un bloc de notas y darle un título de su elección. Agregar .Extensión CPP utilizada para archivos de programación C.

Una vez que se crea el documento, abra la interfaz de línea de comandos y escriba la siguiente consulta adjunta para compilar su código de idioma C usando el compilador GCC.

$ GCC -O [su nombre de archivo] [su nombre de archivo].CPP

Ahora, escriba el comando posterior para la ejecución del código.

$ [Su nombre de archivo].exe

Saltemos al código principal. Hemos comenzado creando firmas de funciones en la parte superior, ya que necesitamos crear dos funciones. Uno será la devolución de llamada y la otra cuya función puntero se está pasando a la función de devolución de llamada.

En la función principal, declararemos/inicializaremos nuestro puntero de la función. Mientras que la función de la función, debemos pasar el puntero como argumento. El código de función principal se presenta en la captura de pantalla debajo.

Ahora, todo lo que necesitamos hacer es completar nuestra devolución de llamada y la otra función. Idéntico al camino en la imagen que se presenta a continuación. La devolución de llamada y otros códigos de función se presentan en la captura de pantalla debajo.

Nuestras funciones no están realizando nada complejo. Para obtener la idea básica, imprimiremos mensajes en la consola. Para ver cómo funciona la función de devolución de llamada. Ejecutar la instrucción que se presenta en la imagen debajo.

A juzgar por la salida, podemos saber cuándo funcionamos llamando desde la principal. Fue a "Función 1" e imprimir el mensaje en la consola. Luego, utilizando el puntero de la función, se accede a "función 2" cuando las líneas de código en "función 2" se ejecutan todas. El control volverá a "Función 1".

Ejemplo 2:

En este caso, implementaremos las operaciones simples de la calculadora (i.mi., Agregar, restar, multiplicar y dividir) con la ayuda de la función de devolución de llamada del lenguaje C. Comenzaremos agregando firmas de operaciones de funciones y la función de devolución de llamada similar al Ejemplo 1.

Luego declararemos nuestro entero, operación y la variable de puntero de función.

Tome la entrada del usuario para que los enteros funcionen y solicite al usuario que elija su operación deseada para realizarlos.

Usando la condición más-if, haremos un puntero de función de operación elegido por el usuario para pasarlo a la función de devolución de llamada de la calculadora.

Eso es todo para la función principal, el tiempo para codificar la devolución de llamada y las funciones de operación. Todas las firmas de funciones de operación toman dos argumentos y devuelven el resultado de la operación como salida. En nuestra función de calculadora, imprimiremos el valor devuelto de la operación llamando a la función de operación utilizando su puntero.

Para todas las funciones de operación, codificaremos para calcular y devolver el resultado de esa operación.

Por fin, es hora de probar nuestro código. Ejecutar la instrucción que se presenta en la imagen debajo.

Como puede ver, el programa funciona sin problemas sin ningún error. Intentemos probar otras operaciones también.

Como puede ver, nuestro programa se está ejecutando lógicamente correcto para todas las operaciones. Cuando un usuario selecciona su operación deseada, se selecciona ese "si" particular de su opción de operación, y ese puntero de la función de operaciones se pasa a la función de calculadora. El uso de esa función de calculadora de puntero llama al código ejecutable de la operación elegida y como, un resultado, recupera la respuesta resultante.

Ahora probaremos qué tan bien reacciona nuestro programa cuando un usuario ingrese una entrada no válida para elegir una operación.

Como puede ver desde la imagen adjunta presentada anteriormente, que nuestro programa funciona sin problemas.

Conclusión:

Hagamos una descripción general rápida que cubrimos en este tutorial, es la teoría de la función de devolución de llamada, el puntero de funciones, su sintaxis e implementamos algunos ejemplos para comprender mejor. Espero que este tutorial lo haya ayudado a arreglar sus conceptos y despejar todas sus consultas con respecto a las funciones de devolución de llamada en el idioma C.