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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.