Sprungbefehle?

Gast #457824
Lesenswert?

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
#457828
Lesenswert?

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
}

  
#457831
Lesenswert?

> 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
Gast #457951
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren