Partage
  • Partager sur Facebook
  • Partager sur Twitter

Oû mettre les headers ?

    18 avril 2006 à 17:21:03

    Bonjour,
    je ne comprends pas où il faut mettre les headers. Dans les fichiers .h, dans les fichiers.c, dans le Main.c ? Je vous montre un exemple sans les headers, pour avoir un exemple concret.
    main.c

    int main(int argc, char *argv[])
        {
        char nom[100], prenom[100];

        scanf("%s", nom);
        scanf("%s", prenom);
            concat(prenom, nom);
            return 0;
        }


    fonctions.c
    void concat(long nom, long prenom)
        {
        printf("%s", strcat(nom, prenom));
        }


    fonctions.h
    void concat(long nom, long prenom);

    Je n'ai volontairement pas mis les headers. La fonction strcat a besoin de string.h
    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      18 avril 2006 à 18:25:55

      Tu dois mettre les headers dans les fichiers ".c". Donc, tes headers seront dans "main.c" et "fonctions.c" , tu aura une ligne qui inclue le header "fonctions.h" ainsi que les libs que tu a besions (stdio, stdlib, string, etc.).
      • Partager sur Facebook
      • Partager sur Twitter
        18 avril 2006 à 18:41:11

        En fait, c'est assez simple. Le C, il veut que chaque fonction utilisée dans un programme soit déclarée, comme chaque variable doit être déclarée au préalable.

        Il y a deux manières de déclarer une fonction : mettre juste le prototype, et mettre le corps de la fonction. De plus, on peut mettre le prototype et _ensuite_ mettre le corps de la fonction, mais c'est un détail.

        Maintenant, il y a un fichier dans lequel tu déclares ta fonction, mais tu vas pas recopier le code dans les autres fichiers qui en ont besoin. Sauf que si tu dis rien aux autres fichiers, ils vont appeler une fonction qu'ils ne connaissent pas, et le compilateur plante.

        La technique, c'est donc de mettre juste le prototype de ta fonction dans le .h, le header de ton fichier, et d'inclure ce .h dans tous les fichiers qui vont utiliser la fonction en question.

        Tu peux le mettre dans le fichier qui contient les fonctions en question : comme elles seront déclarées dans le fichier, ce n'est pas forcément la peine, mais comme ça tu pourras les utiliser n'importe où dans le fichier, et pas après leur déclaration "principale" (celle avec le code et tout).


        Il faut imaginer que ton .h est un peu comme une "vitrine" de ton fichier : il permet de laisser les autres fichiers (quand tu inclus le .h) avoir un aperçu des fonctions (ou des structures, etc..) qui sont dedans, pour que les autres fichiers puissent l'utiliser dans leur code.
        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2006 à 13:31:03

          là il faut que je mette fonctions.h dans main.c et dans fonctions.c, ou juste dans main.c ?
          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2006 à 13:37:28

            Tu dois mettre l'include dans les deux.
            • Partager sur Facebook
            • Partager sur Twitter

            Oû mettre les headers ?

            × 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