Hallo.
Kurze Frage...bin mir innerhalb einer case-Anweisung nicht sicher, wie
weit ein "break"-Abbruch reicht.
Bsp:
----------------------
case 1:
while(PINB & (1<<PB2))
{
Funktion1();
EnergieBudget--;
if(EnergieBudget==0) break; //BREAK1
}
Funktion2();
break; //BREAK2
----------------------
Frage:
Wohin springt "BREAK1" - zur Funktion2(), oder direkt aus switch/case
raus?
Hey __Son´s Bersi__,
das break bezieht sich auf die aktuelle "Ebene".
Er springt nur aus der while()... das hättest du aber auch eben mal kurz
alleine testen können :-P
Kurzes Test-Programm:
Vielen Dank für deine Hilfe!
Adam P. schrieb:> mal kurz> alleine testen können :-P
Dazu müsste ich erst einmal das gesamte Programm fertig programmieren
und ins uC übertragen...
__Son´s B. schrieb:> Dazu müsste ich erst einmal das gesamte Programm fertig programmieren> und ins uC übertragen...
Oder eben mal eine andere Entwicklungsumgebung (VisualStudio, Eclipse,
CodeBlocks, gcc direkt, etc.) öffnen und ein kurzes Konsolenprogramm
(Windows/Linux) schreiben - siehe oben.
Adam P. schrieb:> Oder eben mal eine andere Entwicklungsumgebung (VisualStudio, Eclipse,> CodeBlocks, gcc direkt, etc.)
Es gibt sogar online-C-Compiler, die man aus dem Browser heraus
verwenden kann.
https://www.onlinegdb.com/online_c_compiler
So etwas simuliert zwar keinen Microcontroller, aber den Programmablauf
kann man z.B. mit printf & Co. sichtbar machen.
Rufus Τ. F. schrieb:> Es gibt sogar online-C-Compiler
Oh ja stimmt :) die hatte ich ganz vergessen!
Kann seine Vor- & Nachteile haben.
Ich hab z.B. ein VisualStudio Projekt und da sind halt die Grunddinge
schon hinterlegt, so dass ich nicht bei jedem Test immer bei 0 Anfangen
muss.
Und wenn man sich sogar noch die Hardware "simuliert/abstrahiert", dann
könnte man (er) sogar sein µC Code 1 zu 1 kopieren und testen - man muss
ja da nicht direkt alles implementieren, Stück für Stück, dass was grad
gebraucht wird.
Vielleicht werde ich jetzt hier im Forum gesteinigt für diese Aussage,
aber ich sage es trotzdem:
Statt dem "break" kannst Du auch ein "goto" verwenden, dann ist auch
klar wo Du hinspringst.
Adam P. schrieb:> Oder eben mal eine andere Entwicklungsumgebung (VisualStudio, Eclipse,> CodeBlocks, gcc direkt, etc.) öffnen und ein kurzes Konsolenprogramm> (Windows/Linux) schreiben - siehe oben
"Code::Blocks" scheint einfach, schnell, kostenfrei - gefällt mir auf
anhieb.
Johnny B. schrieb:> Statt dem "break" kannst Du auch ein "goto" verwenden, dann ist auch> klar wo Du hinspringst.
Tolles Werkzeug!
Hatte ich zuerst verwendet, erscheint mir aber im Laufe des Programmcode
zu unübersichtlich. Habe den if/break verschoben, so das das Prog eine
"Ehrenrunde" durchläuft, aber sonst zuverlässig läuft.
Das break beendet die innerste Anweisung, die mit einem break beendet
werden kann (do, while, for, switch).
Manchmal will man aber aus einem geschachtelten Switch raus. Das geht
z.B. so: