Forum: Compiler & IDEs While Schleife.


von Jabu (Gast)


Lesenswert?

Hey,

Es ist ziemlich lächerlich was in meinem Programm im Moment schief 
läuft. Ich habe eine Bedingung und möchte durch eine While Schleife, die 
NICHTS TUT!, warten, bis diese Bedingung erfüllt ist. z.B.

while(!(Taster1 == 1)){ //nichts tun }

oder

while(!(Taster1 == 1));

---------
Beides geht nicht. Das komplette Programm hängt sich auf. Kann es sein, 
das GCC da irgendetwas heimlich "optimiert"? Oder wo liegt mein Fehler?

Danke!

von Turbo J (Gast)


Lesenswert?

Wenn `Taster1` nicht als volatile deklariert wird, dann optimiert GCC 
die Schleife zur Endlosschleife.

von Fabian (Gast)


Lesenswert?

Wie oder was ist "Taster1" ?

von Jabu (Gast)


Lesenswert?

Ich werte mit dem ADC eine kleine Tastatur aus, jeder Taste wird ein 
Wert zugeordnet.. 1,2,3,4,5... in einer Variable wird dieser Wert 
gespeichert und alle paar Millisekunden aktualisiert. Wenn ich diese 
Variable wie oben gezeigt allerdings verwursten will, kommt nichts dabei 
raus.

von Jabu (Gast)


Lesenswert?

Erstaunlich ist, dass wenn ich eine Warteschleife in die while schleife 
setzt (ein paar ms), dann funktioniert es.. nur will ich das nicht /-:

von troll (Gast)


Lesenswert?

Die (vermutliche) Lösung steht doch schon da:
Turbo J schrieb:
> Wenn `Taster1` nicht als volatile deklariert wird, dann optimiert GCC
> die Schleife zur Endlosschleife.

volatile<-- klick

von Jabu (Gast)


Lesenswert?

Werde es sofort probieren.

von Jabu (Gast)


Lesenswert?

Alles klar, nun funktioniert es. Gerade erst in GCC eingestiegen, nehmt 
es mir nicht übel. Danke nochmal!

von Karsten (Gast)


Lesenswert?

Hallo
die gesamte Zeile ist der Kommentar.

Klar was dan passiert ?

Jabu schrieb:
> //nichts tun }

Der Compiler meldet Fehler.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.