Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Relation entre .h standards et .a

    22 avril 2006 à 11:51:03

    Bonjour à tous :) !

    Je suis en train de lire le tuto de M@téo sur le C / C++, et il y a un truc que je ne comprends pas à propos de la programmation modulaire :euh: ...

    J'ai bien compris qu'un header était inclus dans son fichier source .c quand on met #include "Mon_header.h". Ainsi, quand on fait appel à une librairie standard, on doit mettre #include <stdio.h> par exemple. Mais les librairies standard (.a) sont déjà compilées, si je me souviens bien, donc il y a déjà les headers inclus dedans. Alors à quoi ça sert de garder les .h des libairies standard o_O ?

    Merci d'avance à l'âme charitable qui éclairera ma lanterne :p !
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 avril 2006 à 11:56:41

      La lib est déja compilée oui. Les headers, ça sert à connaît le prototype des fonctions de la lib pour pouvoir les appeller correctement. Sans cela, impossible d'appeller une fonction. De plus on ne peut connaître le prototype exact d'une fonction compilée. D'où l'utilité d'avoir la déclaration des fonctions dans un header ;)
      • Partager sur Facebook
      • Partager sur Twitter
        22 avril 2006 à 12:04:36

        Alors si je comprends bien, les librairies sont déjà compilées, donc elles sont déjà en binaire, mais elle ne contiennent pas les headers. Comme elles sont compilées, les prototypes de leurs fonctions ont un peu changé, c'est pour ça qu'il est nécessaire d'inclure les headers dans les .c pour avoir leur noms exacts. C'est ça ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          22 avril 2006 à 12:12:25

          C'est presque ça ^^

          Citation : Shadowe

          mais elle ne contiennent pas les headers.


          Les headers de toute façon ils sont inclus et contiennent des déclaratiosn donc on en retrouve rien à la compilation. Ce genre de déclaration sert à aider le compilateur et non à être exécuté comme du code.

          Citation : Shadowe

          Comme elles sont compilées, les prototypes de leurs fonctions ont un peu changé,


          Quand la fonction est compilée dans une lib, il n'en reste que son nom. Après, ça dépend de comment le processeur traîte le passage d'argument mais par exemple, la fonction est compilée avec son code qui lui permet de récupérer les arguments et de retourner une valeur, donc en regardant le nom, on ne peut pas savoir tout de suite ce qu'elle attend. Après, quand on l'appelle, il suffit de palcer les arguments d'une certaine façon en mémoire et la fonction les récupèrera. D'où l'utilité du prototype pour être sûr de passer correctement les arguments.
          • Partager sur Facebook
          • Partager sur Twitter
            22 avril 2006 à 12:19:51

            D'accord, je comprend mieux ^^ . Merci beaucoup louisclem :) !
            • Partager sur Facebook
            • Partager sur Twitter

            [C] Relation entre .h standards et .a

            × 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