Partage
  • Partager sur Facebook
  • Partager sur Twitter

Strictement RIEN compris....

au secour !

Sujet résolu
Anonyme
    19 février 2006 à 13:29:06

    Bonjour,

    hier j'ai terminer le chapitre processeur .... mais je n'ai absolument rien du tout compris a tout ce charabia dans le parragraphe intituler "#ifndef pour éviter les inclusions infinies"....
    J'ai compris a peu pres a quoi ça sert mais je ne compren pas le code ! :(
    pourriez vous m' éclaircir sur cette parti s' il vous plait ? :-°
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2006 à 13:37:38

      Tu m'as fait peur, j'ai cru que t'avais rien compris à tout le cours :p


      Eh bien le #ifndef c'est une instruction préprocesseur. Le préprocesseur est exécuté avant le compilateur (juste avant).
      Cela se comporte comme un if en langage C.

      #ifndef TRUC
      // Tout ce qui est ici sera compilé seulement si TRUC n'est pas défini
      #endif


      Ca va jusque-là ?

      Dans les exemples, je montre qu'il faut faire :

      #ifndef TRUC
      #define TRUC
      // Tout ce qui est ici sera compilé seulement si TRUC n'est pas défini
      #endif


      Ce qui veut dire que si TRUC n'est pas défini, alors on le défini et on compile le code source qui se trouve jusqu'au endif.
      Si jamais un autre fichier rappelle ce .h après, TRUC aura été défini donc le préprocesseur sautera la partie du ifndef (il ne mettra pas 2 fois le code qui se trouve là).
      • Partager sur Facebook
      • Partager sur Twitter

      If you'd like to join us, read "How do we work at OpenClassrooms"! :)

        19 février 2006 à 13:39:46

        C'est pourtant pas très compliqué, surtout avec les commentaires:
        #ifndef DEF_NOMDUFICHIER // Si la constante n'a pas été définie, le fichier n'a jamais été inclus
        #define DEF_NOMDUFICHIER // On définit la constante pour que la prochaine fois le fichier ne soit plus inclus

        /* Contenu de votre fichier .h (autres includes, prototypes de vos fonctions, defines...) */

        #endif

        La première ligne vérifie si la constante DEF_NOMDUFICHIER existe déjà ou pas.
        Si elle n'existe pas, ça veut dire qu'elle n'a jamais été définie, donc que le fichier n'a jamais été lancé puisque c'est dans celui-ci qu'elle est définie.

        Donc si elle existe ça veut dire qu'elle à déjà été définie et donc que le fichier à déjà été ouvert.

        La deuxième ligne défini la constante, comme ça si on essaye de relancer le fichier, la première ligne verra que cette constante existe déjà et que le fichier à déjà été ouvert.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          19 février 2006 à 13:46:06

          Tout devien clair a présent ! Merci a vous tous ! :D
          • Partager sur Facebook
          • Partager sur Twitter
            19 février 2006 à 14:12:27

            On n'a fait que répéter ce qui était dans le cours en donnant encore moins d'explications.
            Ceci montre que tu as lu rapidement le passage et, n'ayant pas compris du premier coup, tu t'es affolé en venant sur les forums.

            Je me trompe ? :p

            Il faut savoir être un peu plus patient des fois et prendre le temps de relire ce qu'on ne comprend pas ^^
            • Partager sur Facebook
            • Partager sur Twitter

            If you'd like to join us, read "How do we work at OpenClassrooms"! :)

            Anonyme
              19 février 2006 à 14:37:27

              A moin que je ne me trompe, ton message me parai plus evident que ce qu' il y a ecrit dans le cours :D Ou bien alors tu m'a montré ce qu' il fallai voir plus précisément.... et pourtant j'ai lu le cours 2 fois :D
              • Partager sur Facebook
              • Partager sur Twitter

              Strictement RIEN compris....

              × 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