Prototype

ibtihel -  
 ibtihelle -
Bonjour,
just pour savoir c'est quoi un prototype??? (en C++)???? merci

5 réponses

adidyan Messages postés 134 Date d'inscription   Statut Membre Dernière intervention   20
 
Je m'y connais pas en C++ mais j'imagine que le prototype c'est l'essentiel d'un porgramme, le debut où il y a juste le principal. C'est pour voir si ça fonctionne.

Wikipedia : Un prototype désigne le premier, ou l'un des premiers exemplaires d'un produit industriel (voiture, avion…). Cet exemplaire permet de faire des tests afin de valider les choix de conception de l'ensemble.

Le prototype précède les exemplaires de pré-série.
0
pacorabanix
 
oui, mais comme il a précisé "en c++" c'est un terme technique, et votre réponse n'est pas correcte. c.f post 3
0
pacorabanix > pacorabanix
 
je voulais dire post 2
0
Évidemment
 
salut
un prototype en programmation est un "modèle" qui d'un côté indique si la fonction renvoie ou non quelque chose et si oui quel est son type et qui d'un autre côté liste les types et référencements d'éventuels arguments sont attendus type. le but du prototype est de déclarer au compilateur quelles fonctions seront disponibles. Cela permet d'utiliser dans le code des fonctions pas encore compilées ou connues du compilateur

ie void mafonction(char *toto) indique que l'on va utiliser une fonction "mafonction" qui attend un pointeur sur un char et que cette fonction ne renvoie rien

nb: comme je suis pas très bon en C, je sais pas comment on déclare des arguments passés par valeur ou par référence. Peut-être est-ce simplement par pointeur, mais je n'en suis pas sûr
0
ibtihelle
 
non, mai ya klk ki ma di ke "un prototype" c comme sa; déclaration des plusieures fonctions à la fois ???? esk sa c vrai c à d : par exlp: int f(int a,int b)
int g(int k,int i)...ECT
0
pacorabanix
 
un prototype = la "déclaration" d'une fonction sans donner le code de la fonction.
dans ton exemple, ce sont les deux prototypes des fonctions f et g.

A quoi ça sert ? Et bien :
1) on préfère écrire le programme principal après main (ou même dans un autre fichier)
2) on préfère même mettre la liste des fonction dans un fichier séparé de là où sont vraiment les fonctions. (ce sont les fichiers ".h", et le code est dans les fichiers ".c") Comme ça c'est plus clair pour avoir une vue d'ensemble du programme.

3) MAIS : le compilateur sera complètement perdu si tu fais ça :

INCORRECT:
int main{
  f(3,4); //erreur, f n'est pas connue
}

void f(int a, int b) {
  printf("Salut");
}



CORRECT:
Soit on définie la fonction avant de l'utiliser (un peu déconseillé pour les gros programmes) comme ceci:
void f(int a, int b) {
  printf("Salut");
}

int main{
  f(3,4); //erreur, f n'est pas connue
}



Soit on marque le prototype avant pour que le compilateur sache quoi faire, mais on met la définition (l'"implémentation de la fonction") après :

void f(int, int);

int main(...){
  f(3,4);
}

void f(int a, int b) {
  printf("Salut");
}


dans ce dernier code il n'y a pas d'erreur, car même si le compilateur ne connait pas encore la fonction dans les détails, il sais qu'elle ne retourne rien et qu'elle reçoit deux "int" comme paramètre, il peut donc être rassuré de voir que tu l'as appelé correctement dans main().
0
Évidemment
 
re
un prototype c'est une déclaration à l'intention du compilateur, mais aussi du programmeur qui a ainsi le "mode d'emploi" de la fonction : si il voit que la fonction attend un tableau de struct client il évitera de passer un entier. dans le même ordre d'idée si la fonction renvoie un entier mais qu'il ne le récupère pas, il saura pourquoi il a un warning lors de la compilation.

en C (et j'imagine C++), les prototypes des fonctions livrées dans les bibliothèques sont présentés dans des fichiers .h
en Pascal, les prototypes sont présentés dans la partie interface de l'unité
en PL/SQL, les prototypes sont présentés dans le paquetage (idem en Ada)

C'est une obligation pour pouvoir faire des compilations en une seule passe. Sans prototypes, le compilateur doit parcourir une première fois le source et les bibliothèques pour faire l'inventaire des fonctions disponibles puis refaire un second passage pour compiler pour de bon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ibtihelle
 
ok je vois bien ce tu veux dire ok merci bcp à la prochaine
0