Forum: Compiler & IDEs Sprungbefehle?


von Peter (Gast)


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

von Karl heinz B. (kbucheg)


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
}

  

von Joe D. (kosmonaut_pirx)


Lesenswert?

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

von Karl heinz B. (kbucheg)


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

von A.K. (Gast)


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.

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
Noch kein Account? Hier anmelden.