Partage
  • Partager sur Facebook
  • Partager sur Twitter

#IFNDEF et visual Studio.

Sujet résolu
    22 juin 2017 à 17:20:22

    Bonjour.

    J'ai pu voir dans d'autres posts que les instructions suivantes dans un .h

    #ifndef MON_H_INCLUDED
    #define MON_H_INCLUDED
     
    // Contenu du .h
     
    #endif

    Servaient à éviter les inclusions multiple du .h.

    Avant je travaillais sur code::blocks et lors de la création d'une classe je crois me souvenir qu'il les créait tout seul, mais pas sous visual studio.

    question : Est-ce que c'est à nous de le faire, ou bien pour une raison quelconque ce n'est pas nécéssaire sous VS ?

    Autre question : Est-ce qu'il y a un intérêt quelconque de créer un .h qui inclu tous les .h. Ainsi, on na pas 25lingne d'include en début du main par exemple ou dans des classes, mais juste le "global.h" par exemple ?

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2017 à 17:34:22

      1/ Non non, faut bien le faire sous VS.

      Pour plus d'efficacité perso je couple ça + #pragma once

      2/ En général t'as pas 25 lignes d'include, ça sert à rien d'include des fichiers dont t'as pas besoin

      Mais si t'as vraiment autant de fichiers à include et qu'ils ont tous un lien entre eux, oui, c'est mieux

      -
      Edité par Random Coder 99 22 juin 2017 à 17:34:39

      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2017 à 18:01:36

        VinceDlyt a écrit:

        Autre question : Est-ce qu'il y a un intérêt quelconque de créer un .h qui inclu tous les .h. Ainsi, on na pas 25lingne d'include en début du main par exemple ou dans des classes, mais juste le "global.h" par exemple ?

        Merci :)


        Un "global.h" est une très mauvais idée.
        En fesant cela, tu crée des dépendances de tout, avec tout. En conséquence, la moindre modification même mineur de ton code source, entrainera une recompilation complete, ce qu'on veut éviter.
        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2017 à 18:44:06

          Si vous êtes un nostalgique des includes old-school :

          https://www.codeproject.com/Articles/1259/Generator-for-Include-File-Guards

          Pour les includes multiples, il faut correctement architecturer vos sources en module et faire un fichier d'en-tête par module.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            22 juin 2017 à 23:50:21

            J'utilise visual studio depuis sa version 2005 et il a toujours généré automatiquement la protection contre les inclusions multiples lors de la création d'une classe.

            Cependant, au lieu d'utiliser les directives classiques "#ifndef ...", microsoft préfère #pragma once. Je suis surpris que ce ne soit pas le cas pour toi aussi.

            -
            Edité par zoup 22 juin 2017 à 23:50:36

            • Partager sur Facebook
            • Partager sur Twitter
              23 juin 2017 à 9:58:04

              Random Coder 99 a écrit:

              1/ Non non, faut bien le faire sous VS.

              Pour plus d'efficacité perso je couple ça + #pragma once


              Pour quelle(s) raison(s) ?
              • Partager sur Facebook
              • Partager sur Twitter
                23 juin 2017 à 11:01:00

                "#pragma once" est mieux, car vous pouvez avoir des fichiers avec le même nom sans que cela ne pose de problème, par exemple.
                • Partager sur Facebook
                • Partager sur Twitter
                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                  23 juin 2017 à 11:35:31

                  Ah mais oui j'ai le fameux #pragma once, je n'y avais pas fais attention.

                  Son but serait donc le même ?

                  Merci de vos réponses !

                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juin 2017 à 11:38:52

                    >Son but serait donc le même ?

                    Oui, mais en mieux, RTFM.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      23 juin 2017 à 11:39:32

                      VinceDlyt a écrit:

                      Ah mais oui j'ai le fameux #pragma once, je n'y avais pas fais attention.

                      Tu manques un petit peu de curiosité. Tu vois une ligne dans ton code que tu ne connais pas et tu ne vas pas te renseigner sur ce qu'elle fait?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 juin 2017 à 12:40:09

                        Adraekor a écrit:

                        Random Coder 99 a écrit:

                        1/ Non non, faut bien le faire sous VS.

                        Pour plus d'efficacité perso je couple ça + #pragma once


                        Pour quelle(s) raison(s) ?


                        Comme l'a dit bacelar, pragma once est mieux, et plus performant je crois.

                        Sinon, pour les compilos qui ne le supportent pas, l'include guard normal est là

                        -
                        Edité par Random Coder 99 23 juin 2017 à 12:43:11

                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 juin 2017 à 13:01:10

                          zoup a écrit:

                          Tu manques un petit peu de curiosité. Tu vois une ligne dans ton code que tu ne connais pas et tu ne vas pas te renseigner sur ce qu'elle fait?


                          Bah je reste débutant (en c, en POO et du coup sur vusal studio) du coup je me renseigne étapes par étapes, je n'y avais pas fais attention jusque là parce que je n'avais pasvraiment créé de classe avec VS ;)

                          Merci en tous cas de vos réponses !

                          Je mets le sujet en résolu :)

                          • Partager sur Facebook
                          • Partager sur Twitter

                          #IFNDEF et visual Studio.

                          × 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