Comment prototyper une fonction dans la programmation de c

Qu'est-ce qui se passe quand vous ne prototyper pas? Comme pour tout dans la programmation C, lorsque vous délirez place, le compilateur ou outil de liaison vous permet de savoir avec un message d'erreur - ou le programme juste ne fonctionne pas correctement. Il est pas la fin du monde - non, pas comme la programmation d'un robot militaire ou la conception de code génétique pour une nouvelle espèce de dionée.

BASE FUNCTION- NO RETURN

invite vide #include () - / * prototype de fonction * / int main () {int boucle d'entrée-char [32] = 0 -loop-tout (looplt; 5) {prompt () - fgets (entrée, 31, stdin) -loop = boucle + 1-} return (0) -} / * invite d'affichage * / prompt void () {printf ("C: DOS>") -}

Exercice 1: Modifier le code source de base Fonction- No Return. Commenter le prototype de la ligne 3. Créer le résultat.

Les erreurs de compilation sont des choses merveilleuses, délicieusement précises encore entièrement cryptiques. Voici le message d'erreur généré par le code de blocs, bien que seules les parties pertinentes du message:

13 Avertissement: déclaration implicite de la fonction 'prompt'23 Attention: Conflit de types pour' prompt'13 Attention: précédente déclaration implicite de «prompt» était ici



Le premier avertissement se produit à la ligne 13 dans le fichier de code source, où la fonction prompt () est utilisé dans la fonction main (). Le compilateur vous dit que vous utilisez une fonction sans un prototype. Comme le message d'erreur dit, vous êtes implicitement en déclarant une fonction. Voilà un non-non, mais pas une erreur complète sur.

Le deuxième avertissement se produit lorsque la fonction prompt () habite dans le programme. Dans le code source, il est à la ligne 23. L'avertissement indique que prompt () a déjà été déclaré (à la ligne 11) et que la deuxième utilisation peut entrer en conflit avec la première.

Le dernier avertissement est une référence à l'endroit où la fonction a été appelé, de nouveau à la ligne 13.

Pour le dire succinctement: Le compilateur n'a aucune idée de ce qui se passe avec la fonction prompt (). Votre code compile, mais l'exécution est risqué.

Vous pouvez tirer la conclusion que le prototypage est une nécessité absolue dans votre code C. Cela ne veut pas tout à fait vrai. Vous pouvez éviter le prototypage en réorganisant les fonctions dans votre code source. Tant que la fonction est répertorié avant il est utilisé, vous ne devez pas un prototype.

Exercice 2: Modifier votre code source à partir de l'exercice 10-3. Retirer la fonction prototype qui a été commentée à la ligne 3. Couper et Coller (déplacer) la fonction () invite du fond du code source offre à la partie supérieure, au-dessus de la fonction main (). Enregistrer, créer et exécuter.

Éviter le prototype de fonction montre la solution pour l'exercice 2.

ÉVITER LE prototype de fonction

#include / * Affichage rapide * / prompt void (void) {printf ("C: DOS>") -} int entrée principale () {int boucle char [32] = 0 -loop-tout (looplt; 5 ) {prompt () - fgets (entrée, 31, stdin) -loop = boucle + 1-} return (0) -}

Ecriture de la fonction main () en premier, suivi par d'autres fonctions permet pour une meilleure lisibilité, même si vous êtes libre de mettre vos propres fonctions d'abord pour éviter le prototypage. Et si vous ne faites pas, gardez à l'esprit que d'autres programmeurs peuvent faire de cette façon, alors ne soyez pas surpris quand vous le voyez.

Les messages d'erreur du compilateur dans Code :: Blocks ont parenthèses après eux. Les commentaires entre parenthèses renvoient à la interrupteur, ou l'option traditionnelle de ligne de commande, qui permet de vérifier pour un avertissement particulier. Par exemple, les messages d'erreur de l'exercice 1 lire dans son intégralité:

11 Avertissement: déclaration implicite de la fonction «prompt» (-Wimplicit-fonction-déclaration) 20 Avertissement: les types de conflit «prompt» (activé par défaut)

» » » » Comment prototyper une fonction dans la programmation de c