Prototip de funció
En programació, un prototip de funció o interfaç de funció és una declaració d'una funció que especifica el nom de la funció i la seua signatura (aridad, tipo de senyes dels paràmetros i tipo de la tornada), pero omet el cos de la funció. Mentres que el còdic d'una funció definix "cóm" fa lo que fa (el seu "implementació"), un prototip de funció simplement expressa el seu interfaç, és dir, "qué" tipos de senyes entren i ixen d'ella. El terme "prototip de funció" s'utilisa particularment en el context dels llenguages de programació C i C++, a on amprar declaracions anticipades de funcions en archius de capçalera permet dividir un programa en unitats de traducció, és dir, en parts que un compilador pot traduir per separat en archius d'objectes, per a ser combinats per un enlazador en un ficher eixecutable o una llibreria. La declaració de la funció precedix a la definició de la funció i brinda detalls del seu nom, tipo de tornada i classe d'almagasenament junt en atres atributs rellevants.[1]
Els prototips de funcions es poden utilisar quan:[2]
- Es desija definir un tipo extern
- Creació d'una part d'interfaç
En un prototip, els noms dels paràmetros són opcionals (i en C/C++ tenen el prototip de funció àmbit, lo que significa que el seu alcanç termina al final del prototip). No obstant, el tipo és necessari junt en tots els modificadores (per eixemple, si és un punter o un referència a un paràmetro Plantilla:Mona) llevat Plantilla:Mona en solitari.
En programació orientada a objectes, les interfaços i els métodos abstractes tenen pràcticament el mateix propòsit.
Eixemple
[editar | editar còdic]Considere's el següent prototip de funció:
void Sum( int a, int b );O
void Sum( int, int );O
auto Sum( int, int ) -> void; // C++ onlyEls prototips de funcions inclouen la signatura de la funció, el nom de la funció, el tipo de tornada i l'especificador d'accés. En este cas el nom de la funció és "Suma". La signatura de la funció definix el número de paràmetros i els seus tipos. El tipo de devolució és "nul". Açò significa que la funció no tornarà cap valor. Tinga's en conte que els noms dels paràmetros en el primer eixemple són opcionals.
Usos
[editar | editar còdic]En les primeres versions de C, si una funció no s'havia declarat prèviament i el seu nom apareixia en una expressió seguida d'un paréntesis esquerre, es declarava implícitament com una funció que torna un int i no se suponia res sobre els seus arguments. En este cas, el compilador no podria realisar la verificació de validea en temps de compilació del número i tipo(s) d'arguments.
L'estàndart C99 requerix l'us de prototips.
char MyFunction ( int a ); /* Function prototype */
#include <stdio.h>
#include <limits.h>
int main( void )
{
putchar( MyFunction( -1 ) ); /* Cridada correctament formateada */
putchar( MyFunction( 1.5 ) ); /* El compilador genera una advertència per una discrepància de tipos */
putchar( MyFunction("IncorrectArgType") ); /* El compilador generarà una advertència */
putchar( MyFunction() ); /* El compilador generarà l'error: en molt pocs arguments */
int one=1;
putchar( MyFunction( INT_MAX + one ) ); /* Encara que se suma 1 al sancer màxim
/* és un error que no es pot detectar en temps de compilació */
return 0;
}
char MyFunction( int n ) /* Definició de la funció */
{
if (n > 0) return '>';
if (n < 0) return '<';
return '=';
}La funció Plantilla:Mona espera ser cridada en un argument sancer. En incloure el prototip de funció, informa al compilador que la funció pren un argument sancer i permet que el compilador detecte cridades especificades incorrectament.
Creant interfaços de biblioteca
[editar | editar còdic]En colocar prototips de funcions en un ficher capçalera, es pot especificar una interfaç per a una biblioteca.
Declaració de classe
[editar | editar còdic]En C++, els prototips de funcions també s'utilisen en les definicions de classe.
Vore també
[editar | editar còdic]Referències
[editar | editar còdic]- ↑ TylerMSFT. «Function Prototypes» (en en-us).
- ↑ «Function prototypes» (en en-us).
Bibliografia
[editar | editar còdic]- (1988) The C Programming Language, 2nd edició, Prentice Hall PTR. ISBN 0-13-110362-8.
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Prototipo de función» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.