Partage
  • Partager sur Facebook
  • Partager sur Twitter

#Define ???

Sujet résolu
    19 juin 2019 à 1:30:59

    Bonjour à tous.

    Je viens de reprendre le code en C après une très longue pose, et je tombe sur un code que je ne comprends pas.
    Ce sera l'enfance de l'art pour vous je suis sur.

    #define	LCD_STROBE ((LCD_EN = 1),(LCD_EN=0))

    Que fait cette macro quand on l'appelle plusieurs fois ? 

    LCD_STROBE;
    DelayUs(100);
    LCD_STROBE;

    La valeur de LCD_EN alterne entre 1 et 0 à chaque appel ?

    Cordialement.

    • Partager sur Facebook
    • Partager sur Twitter
      19 juin 2019 à 14:25:39

      Bonjour,

      La macro génère des impulsions très courtes (la durée d'une instruction) sur LCD_EN qui est mis à 1 puis juste après à 0.

      Dans le code ci-dessus il y a 2 impulsions séparées de 100us.

      Espérant avoir répondu à la question.

      • Partager sur Facebook
      • Partager sur Twitter
      Architecture SDL                     Multithreading         
        19 juin 2019 à 14:42:20

        En supposant que le compilateur n'optimise pas ça, oui.

        Même en -O1 ça sera optimisé en LCD_EN = 0. Un moyen d'avoir l'effet indiqué par @picosoft est de compiler le code en -O0, sans aucune optimisation.

        -
        Edité par potterman28wxcv 19 juin 2019 à 14:46:14

        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2019 à 13:37:09

          Parfait merci beaucoup pour vos réponses, bonne journée. :)

          -
          Edité par WMDRAGONMW 20 juin 2019 à 13:37:19

          • Partager sur Facebook
          • Partager sur Twitter

          #Define ???

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown