Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilité de mettre des prototypes de foctions dans

Utilité de mettre des prototypes de foctions dans des headers (.h) ?

    15 octobre 2019 à 18:32:38

    Bonsoir.

    J'aimerais comprendre en quoi est ce utile de mettre en les prototypes des fonctions de notre bibliothèques personelles dans une .h.

    En effet quand j'utilise gcc *.c pour compiler tous mes fichiers c du repertoire courant, bah tout marche... Quel est le plus que je gagne en ayand un header personel ?

    J'ai remarqué dans certains tutos vidéos que cette pratique était courante. J'aimerais comprendre bien  le concept d'en-tête en c en dehors des en-tête systeme classique.

    • Partager sur Facebook
    • Partager sur Twitter
      15 octobre 2019 à 18:55:09

      Quand tu crées une bibliothèque et que tu l'as compilée. Tu obtiens un fichier de bibliothèque .a ou .lib que tu vas ensuite utiliser ou fournir à des tiers. Si tu ne fournis pas les prototype comment ces tiers ou le compilateur va faire pour utiliser les fonctions de ta bibliothèque ?
      • Partager sur Facebook
      • Partager sur Twitter
        15 octobre 2019 à 19:12:15

        JuniorMedehou a écrit:

        En effet quand j'utilise gcc *.c pour compiler tous mes fichiers c du repertoire courant, bah tout marche... Quel est le plus que je gagne en ayand un header personel ?

        Beaucoup de sécurité. Ceci va compiler
        #include <stdio.h>
        
        int main(void) {
        	printf("2.1+2.2=%d\n",add(2.1));
        	
        	return(0);
        }
        
        void add(int a, int b) {
        	return(a+b);
        }

        avec des warnings, va s'exécuter, mais pour le résultat....

        Le prototypage des fonctions permet au compilateur de vérifier que le nombre d'arguments est correct, et que chaque argument est du bon type. 




        -
        Edité par edgarjacobs 15 octobre 2019 à 19:54:37

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          16 octobre 2019 à 15:32:04

          Si tu appelle une fonction qui est dans un autre fichier, qui renvois autre chose qu'un int et que t'essaye de l'afficher bah tu segv. Voilà l'intérêt.
          #include <stdio.h>
          
          int main(void)
          {
              char *str = test();
              printf("%s\n", str);
              return (0);
          }

          et dans un autre fichier

          #include <string.h>
          
          char *test(void)
          {
              return (strdup("aze"))
          }

          si tu fais gcc *.c

          ./a.out tu segv alors que si t'avais mis les protos dans un .h ça marcherai nickel

          • Partager sur Facebook
          • Partager sur Twitter

          Utilité de mettre des prototypes de foctions dans

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown