[gelöst] while(1); Wozu?



  • Hallo und Guten Morgen,

    ich habe da in einem Prog eine Funktion gefunden, in der mir etwas unklar ist...
    Und zwar ist dort eine Zeile while(1); drin aber kein do vorher. Und noch dazu steht das while(1); am Ende der Funktion ohne eine nachfolgende Anweisung. Ich krieg' nicht in meinen Schädel wozu das gut sein soll... Ist bestimmt ganz einfach?

    void sw_reset(void)
    {
    	CCAP4L=0xFF; CCAP4H=0xFF;
    	CCAPM4=0x48;
    	CMOD=(CMOD & 0x01) |0x40;
    	CR=TRUE;
    	while(1);                 // Wozu ist das while da?
    }
    

    Kann mir jemand diesbezüglich weiterhelfen?

    MfG



  • Ist einfach eine Endlosschleife. Da 1 immer wahr ist wird immer wieder nichts gemacht.



  • Gut, das dachte ich mir fast...

    Dankeschön!



  • Damit will der Autor wohl verhindern, dass noch weiterer Code ausgeführt wird, wenn ein Software Reset ausgelöst wurde. Denke ich zumindest.



  • Erstmal: while() kann auch ohne vorheriges do auftreten, dann ergibt das eine Schleife mit Anfangsbedingung (und die zu wiederholende Anweisung folgt hinter der schließenden Klammer). In deinem Fall hast du als Abbruchbedingung die 1 (immer wahr) und als Schleifenrumpf das Semikolon (leere Anweisung = no-op), d.h. die Schleife macht gar nichts - und das bis zum St.-Nimmerleins-Tag.

    (aber vermutlich sorgen die Register-Manipulationen vor der Schleife dafür, daß der Computer bei nächster Gelegenheit runterfährt (so deute ich zumindest den Funktionsnamen) - und damit auch dein Programm abschießt)


Anmelden zum Antworten