Article de reference

Prototype de fonction

En programmation informatique , un prototype de fonction est une déclaration qui spécifie le nom et la signature de la fonction ( arité , types de données des paramètres et type...

programmation informatique , un prototype de fonction est une déclaration qui spécifie le nom et la signature de la fonction ( arité , types de données des paramètres et type de retour ), mais omet son corps. Alors qu'une définition de fonction décrit comment la fonction accomplit sa tâche (son « implémentation »), un prototype de fonction spécifie uniquement son interface, c'est- à-dire les types de données qu'elle accepte en entrée et en sortie. Le terme « prototype de fonction » est particulièrement utilisé dans le contexte des langages de programmation C et C++, où le placement des déclarations anticipées de fonctions dans les fichiers d'en-tête permet de diviser un programme en unités de traduction , c'est-à-dire en parties qu'un compilateur peut traduire séparément en fichiers objets , lesquels seront ensuite combinés par un éditeur de liens pour former un exécutable ou une bibliothèque . La déclaration de fonction précède sa définition et précise son nom, son type de retour, sa classe de stockage ainsi que d'autres attributs pertinents.

Les prototypes de fonctions peuvent être utilisés dans les deux cas suivants :

  • Définition d'un type externe
  • Création d'une partie d'interface

Dans un prototype, les noms des paramètres sont facultatifs (et en C/C++ ont une portée de prototype de fonction , ce qui signifie que leur portée se termine à la fin du prototype), cependant le type est nécessaire ainsi que tous les modificateurs (par exemple s'il s'agit d'un pointeur ou d'une référence à un paramètre const ) sauf const seul.programmation orientée objet , les interfaces et les méthodes abstraites ont sensiblement le même objectif.

C99 impose l'utilisation de prototypes.

)); // Avertissement du compilateur : incompatibilité de type putchar ( orderingCharacter ()); // Erreur du compilateur : nombre d'arguments insuffisant// Bien que l'ajout de 1 à INT_MAX soit une erreur de dépassement d'entier, // elle ne peut pas être détectée à la compilation putchar ( orderingCharacter ( INT_MAX + 1 )); }// Définition de la fonction char orderingCharacter ( int n ) { if ( n > 0 ) { return '>' ; } else if ( n < 0 ) { return '<' ; } return '=' ; }

Cette fonction orderingCharacter()attend un argument entier. En incluant son prototype, vous indiquez au compilateur qu'elle prend un argument entier et vous lui permettez de détecter les appels incorrects.

Création d'interfaces de bibliothèque

En plaçant les prototypes de fonctions dans un fichier d'en-tête , on peut spécifier une interface pour une bibliothèque .

déclaration de classe

En C++, les prototypes de fonctions sont également utilisés dans les définitions de classes .

En Java et en C# , les interfaces sont déclarées avec des signatures, qui sont ensuite implémentées par la classe d'implémentation.

TXN" + System.currentTimeMillis ( ) ; System.out.printf ( " Traitement du paiement par carte de crédit de %f % s...%n " , amount , currency ) ; return true ; }@Override public String getReceiptDetails () { return String . format ( "Reçu pour l'ID %s | Montant : $%f" , lastTransactionId , lastAmount ); }@Override public void refundPayment ( String transactionId ) { System . out . printf ( "Remboursement de la transaction : %s...%n" , transactionId ); } }