Partage
  • Partager sur Facebook
  • Partager sur Twitter

Just une petite question sur les macro

Sujet résolu
    27 juillet 2006 à 4:00:20

    boujour a tous :D ,

    j'ai une toute petite question vraiment facile. J'ai lu le cour de meteo et la je les regardait une petite deuxieme fois pour etre sur avant daller avec la sdl et jai remarquer quelque chose meteo ecrit sur les macros bien sur:

    #define MAJEUR(age) if (age >= 18) \
                        printf("Vous etes majeur\n");

    int main(int argc, char *argv[])
    {
        MAJEUR(22)

        return 0;
    }


    si vous regarder bien il ne definie pas la variable age ds le define o_O est ton sensé le faire quand même?? Parce que sa me parrait vrmt bizarre, cela ne va pas ocassioner des bugs??

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 juillet 2006 à 4:04:11

      Si il met comme ça, c'est que c'est bon, au pire, pour répondre à tes questions, tu as cas essayer ;)

      Bye
      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2006 à 4:46:34

        C'est tout a fait normal qu'il ne définie pas sa variable "age" dans la define, puisque c'est une macro qui prend "age" en paramètre. C'est ensuite en appellant la macro que tu rentres la valeur de la variable age !

        MAJEUR(22)

        Ici la variable age vaut 22, mais tu peux mettre nimporte quoi !

        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2006 à 9:00:08

          Citation : Arachnide

          #define MAJEUR(age) if (age >= 18) \
                              printf("Vous etes majeur\n");

          int main(int argc, char *argv[])
          {
              MAJEUR(22)

              return 0;
          }



          si vous regarder bien il ne definie pas la variable age ds le define o_O est ton sensé le faire quand même?? Parce que sa me parrait vrmt bizarre, cela ne va pas ocassioner des bugs??


          age n'est pas une 'variable' au sens C du terme. Le preprocesseur (qui traite les macros) agit avant que le compilateur ne soit invoqué. Il ne fait que du remplacement de texte, soit :
              MAJEUR(22)

          devient :
             if (22 >= 18)
                printf("Vous etes majeur\n");

          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            27 juillet 2006 à 16:43:25

            okay je comprend mieu merci -ed- :D .
            • Partager sur Facebook
            • Partager sur Twitter

            Just une petite question sur les macro

            × 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