Zitat Zitat von HaWe Beitrag anzeigen
ist ja ok, wenn man nicht iwas immer nur pauschal verteufelt. Selbst erfahrene Programmierer verwenden u.U. goto, und in diesem jetzt folgenden sehr speziellen Fall sah ich auch keine andere Möglichkeit, als es meinem Vorbild bei der Arduino- und Raspi-Portierung gleich zu tun: http://www.mindstormsforum.de/viewto...p=66103#p66103
http://www.mindstormsforum.de/viewto...p=66103#p67841
GOTOs sind bei einem erfahrenen Programmierer ein (seltener) Ausnahmefall und nicht die Regel.

Du wirst da GOTOs bei der Fehler- oder Ausnahme-Behandlung finden, also immer nur dann, wenn der normale Programmablauf abgebrochen werden muss, bzw. eine lineare Abarbeitung des Programms nicht mehr möglich ist.

In C wären noch setjmp() und longjmp(), bzw. in C++ catch(), throw usw. Damit kann man dann auch an eine Position ausserhalb der aktuellen Funktion springen.

MfG Peter(TOO)

- - - Aktualisiert - - -

Zitat Zitat von Klebwax Beitrag anzeigen
Wenn du schon so lang ausholst, dann bitte richtig:

nach einem while wird der nächste Befehl ausgeführt, solange die Bedingung wahr ist. Und zwar ein und genau ein Befehl. Wird im Körper, wie du das bezeichnet hast, mehr als ein Befehl gebraucht, fasst man sie durch geschweifte Klammern zu einem Befehl zusammen. Mindestens ein Befehl muß aber dastehen, zur Not ein leerer Befehl, der nur aus dem Semikolon, dem Befehlsende in C, besteht. Ein C NOP gewissermaßen.
In C darf überall wo ein Befehl stehen darf auch ein Block (ein oder mehrere Befehle in geschweiften Klammern) stehen!
Hinzu kommt noch, dass bei den neueren C-Versionen (ab C99 ?) in so einem Block auch lokale Variablen deklariert werden dürfen, welche dann nur innerhalb diese Blocks gültig und sichtbar sind.

MfG Peter(TOO)