Makro



  • Hallo

    Ich habe 2x den gleichen Befehl, spricht 2x wait folgendermassen

    for (i = 0; i < 2; i++)
            {
                __delay_ms(5);            
            }
    

    Geht es irgendwie, dass ich ein Makro daraus mache und stattdessen 2x Wait schreibe?


  • Mod

    __delay_ms(5);
    __delay_ms(5);
    

    ­čśĽ



  • Oder sogar

    __delay( 10 );
    


  • buell schrieb:

    Geht es irgendwie, dass ich ein Makro daraus mache und stattdessen 2x Wait schreibe?

    Klar, aber wozu? Ich meine, was willst du eigentlich erreichen? Generiert der Compiler ├╝berhaupt unterschiedlichen Code?



  • Warum meinst Du, ein Makro zu brauchen? Kennst Du Funktionen?



  • Ich m├Âchte keine Funktion, sondern ein Makro.

    die Delay Funktion wie oben angef├╝hrt, geht maximal bis 20ms.
    Wie w├╝rde man eine For-Schleife also als ein Makro definieren?

    Es spielt jetzt mal keine Rolle, welche Vorteile und Nachteile es hat oder ob es Sinn macht.

    Funktionert:

    #define wait(n,m)       for (i = 0; i < n; i++){__delay_ms(m);}
    

    so einfach? ­čÖä

    inline w├╝rde ja notfalls auch gehen

    inline void wait(int n, int m) 
    { 
         for (i = 0; i < n; i++)
         {
            __delay_ms(m);
         }  
    }
    

  • Mod

    Spricht irgendein vern├╝nftiger Grund gegen die Funktion?

    Ansonsten: Wo genau ist das Problem? Einfach machen.



  • DocShoe schrieb:

    Oder sogar

    __delay( 10 );
    

    Hahaha, das war der kr├Ânende Abschluss meines Tages. Da kann ich ja beruhigt ins Bett gehen.


Log in to reply