Moin, gibts es in C sowas wie einen Sprungbefehl, weil ich hab ein Programm wo es mehrere Bedingungen gibt und ein paar von denen sollen nach Erfüllung der Bedingung denselben etwas längeren Befehl ausführen. Deswegen wärs mir lieber wenns sowas wie ein "GoTo" gäbe und ich den Befehl nur einmal im Programm hätte. Geht das? Habe AtMega16 auf dem MyAVR-Board. MfG
Prinzipiell gibt es schon einen goto. Was spricht dagegen, den 'etwas längeren Befehl' in eine Funktion zu packen und diese Funktion an den entsprechenden Stellen einfach aufzurufen?
1 | void foo() |
2 | {
|
3 | // hier der etwas längere Befehl
|
4 | }
|
5 | |
6 | |
7 | int main() |
8 | {
|
9 | |
10 | if( .... ) |
11 | mach was; |
12 | |
13 | else if( .... ) |
14 | foo(); // führe den 'längeren Befehl' aus |
15 | |
16 | else if( ..... ) |
17 | mach was ganz anderes; |
18 | |
19 | else
|
20 | foo(); // auch in diesem Fall wird der 'längere Befehl' ausgeführt |
21 | |
22 | ...
|
23 | }
|
hallo, das geht.
1 | goto marke; |
2 | ...
|
3 | marke: |
4 | ...
|
wozu man den braucht, weiß ich zwar nicht, aber es gibt sicher hier und da einen anwendungszweck, trotz routinen oder macros. bye kosmo
> aber es gibt sicher hier und da einen anwendungszweck,
Aber gaaaanz selten.
Manchmal ist ein goto ganz nützlich, wenn in einer
Funktion mehrere Fehlerausstiege notwendig sind und
vor dem return noch Aufräumarbeiten notwendig sind.
Aber abgesehen von solchen Sonderfällen: goto <==> bäh
Anderer Fall in dem ich undogmatisch goto durchaus verwende. Ist ein ziemlich klassisches Pattern: for (...) { if (match) goto found; ... } ...Mist, nicht gefunden... return; found: ...und hier geht's weiter... Kann man wie immer auch anders machen, aber übersichtlicher sind die Alternativen m.E. auch nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.