stringtranslate.com

Prototipo de función

En programación informática , un prototipo de función es una declaración de una función que especifica el nombre de la función y la firma de tipo ( aridad , tipos de datos de los parámetros y tipo de retorno ), pero omite el cuerpo de la función. Mientras que una definición de función especifica cómo la función hace lo que hace (la "implementación"), un prototipo de función simplemente especifica su interfaz, es decir, qué tipos de datos entran y salen de ella. El término "prototipo de función" se utiliza particularmente en el contexto de los lenguajes de programación C y C++, donde colocar declaraciones de funciones en los archivos de encabezado permite dividir un programa en unidades de traducción , es decir, en partes que un compilador puede traducir por separado en archivos de objeto , para ser combinadas por un enlazador en un ejecutable o una biblioteca . La declaración de función precede a la definición de función, dando detalles del nombre, el tipo de retorno y la clase de almacenamiento junto con otros atributos relevantes. [1]

Los prototipos de funciones se pueden utilizar cuando: [2]

En un prototipo, los nombres de los parámetros son opcionales (y en C/C++ tienen un alcance de prototipo de función , lo que significa que su alcance termina al final del prototipo); sin embargo, el tipo es necesario junto con todos los modificadores (por ejemplo, si es un puntero o una referencia al parámetro const ) excepto const solo.

En la programación orientada a objetos , las interfaces y los métodos abstractos cumplen prácticamente el mismo propósito.

Ejemplo

Considere el siguiente prototipo de función:

anular suma ( int a , int b );    

o

anular suma ( int , int );  

o

suma automática ( int , int ) -> void ; // Solo C++     

Los prototipos de funciones incluyen la firma de la función, el nombre de la función, el tipo de retorno y el especificador de acceso. En este caso, el nombre de la función es "Sum". La firma de la función define la cantidad de parámetros y sus tipos. El tipo de retorno es "void". Esto significa que la función no devolverá ningún valor. Tenga en cuenta que los nombres de los parámetros en el primer ejemplo son opcionales.

Usos

En las primeras versiones de C, si una función no se había declarado previamente y su nombre aparecía en una expresión seguida de un paréntesis izquierdo, se declaraba implícitamente como una función que devuelve un inty no se suponía nada sobre sus argumentos. En este caso, el compilador no podría realizar una comprobación de validez en tiempo de compilación de la cantidad y el tipo de argumentos. El estándar C99 requiere el uso de prototipos.

char MyFunction ( int a ); /* Prototipo de función */   #include <stdio.h> #include <limits.h> int principal ( void ) {      putchar ( MyFunction ( -1 )); /* Llamada con formato correcto */ putchar ( MyFunction ( 1.5 )); /* El compilador genera una advertencia debido a una falta de coincidencia de tipos */ putchar ( MyFunction ( "IncorrectArgType" )); /* El compilador generará una advertencia */ putchar ( MyFunction ()); /* El compilador generará un error de muy pocos argumentos */ int one = 1 ; putchar ( MyFunction ( INT_MAX + one )); /* Aunque sumar 1 al entero máximo  /* es un error, no se puede detectar en tiempo de compilación */                 devuelve 0 ; } char MyFunction ( int n ) /* Definición de función */ { if ( n > 0 ) return '>' ; if ( n < 0 ) return '<' ; return '=' ; }                  

La función MyFunction espera ser llamada con un argumento entero. Al incluir el prototipo de función, le informa al compilador que la función toma un argumento entero y le permite detectar llamadas especificadas incorrectamente.

Creación de interfaces de biblioteca

Al colocar prototipos de funciones en un archivo de encabezado , se puede especificar una interfaz para una biblioteca .

Declaración de clase

En C++, los prototipos de funciones también se utilizan en las definiciones de clases .

Véase también

Referencias

  1. ^ TylerMSFT (25 de enero de 2023). "Prototipos de funciones". learn.microsoft.com . Consultado el 9 de agosto de 2023 .
  2. ^ "Prototipos de funciones". www.ibm.com . 2018-10-25 . Consultado el 2023-08-09 .