Protoype de fonction

Résolu/Fermé
cestmoi1993 Messages postés 99 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 13 juin 2016 - 28 oct. 2011 à 13:29
cestmoi1993 Messages postés 99 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 13 juin 2016 - 28 oct. 2011 à 14:00
Bonjour,
je me pose une question sur les prototypes de fonctions :

Dans un code on déclare nos fonctions comme ceci (par exemple) :
int maFonction (int a, intb);

int main()
{
//instructions
}

ma question est : Pourquoi ne déclare t'on pas la fonction main comme ceci :
int main(); ?
J'ai lu sur le sdz que c'était une ligne inutile pour la plupart des compilateurs mais pourquoi ?

Merci par avance pour vos réponses .

P.S. j'utilise code::blocks, visual studio 2010, visual studio 11 suivant mes humeurs



2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
28 oct. 2011 à 13:55
Tu n'es pas obligé de prototyper tes fonctions. Tu peux directement les écrire avec leur contenu. Le seul hic c'est que lorsque tu appelles une fonction dans une autre, son prototype doit avoir été défini plus haut dans le fichier.
Mettre le prototype de main avant la fonction main est inutile à part si tu appelles la fonction main dans une autre fonction (plutôt déconseillé)

Exemple :

int g();

int f() // pas besoin de prototyper f avant car il n'a jamais été utilisé plus haut
{
    return 2*g(); // on peut utiliser g qu'il a été prototypé plus haut
}

int g()
{
    return 1;
}

int main() // pas besoin de prototyper main avant car il n'a jamais été utilisé plus haut
{
    int n=f(); // on peut utiliser f qu'il a été prototypé par sa définition
    return 0;
}
Pour bien comprendre à quoi sert le prototypage tu pourrais réécrire ce code en définissant f, g, et main dans différent ordres, et en prototypant juste ce qu'il faut.
Les différents ordre possibles sont [f,g,main] (que je viens de faire), [f,main,g], [g,f,main], [g,main,f], [main,f,g], [main,g,f]
0
cestmoi1993 Messages postés 99 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 13 juin 2016 55
28 oct. 2011 à 14:00
D'accord, merci beacoup, probleme résolu !
0