na chama:
Kopiuj
int funkcja(int context, int jumptarget)
{
switch(jumptarget)
{
case 0: break;
case 1: goto tu_1;
case 2: goto tu_2;
case 3: goto tu_3;
...
}
...
tu_1:
...
tu_2:
...
tu_3:
...
}
Akurat uzyles poprawnego zapisu label'owego, wiec sadze ze juz miales/probowales wykorzystac goto, tylko sie nie pochwaliles.
jesli widzac to, przyjdzie Ci do glowy ze goto jest złe i ze go nie nalezy uzywac bo-cos-tam, i nie chcesz z tego powodu z niego korzystac, to wpierw zauwaz, ze jezeli w ogole wychodzisz z pytaniem i takimi ograniczeniami jak przedstawiles, to kod juz masz bardzo ciezko skitrany i dodanie dwoch, trzech, dziewieciu "forward only goto" nie za wiele w nim juz bardziej ubrudzi.
powinienes ulozyc program tak, aby poszczegolne kroki obliczen/przetwarzania byly przynajmniej osobnymi funkcjami, lub przynajmniej zeby byly rozdzielone tak, abys mogl je latwo odseparowac if/switchami i wybierac pomiedzy nimi. Jezeli zadnej z tych rzeczy zrobic nie mozesz, pozostaje Ci przepisanie kodu i uporzadkowanie go, albo uzycie goto. Z tym, ze jesli nie chcesz sie podjac jego porzadkowania bo za trudne albo za wiele pracy, to i goto moze Ci nie pomoc, gdyz aby wlasciwie i bezpiecznie je zastosowac, i tak musisz wszystko gruntownie przeanalizowac
@rozproszony/kontynuowac/zagniezdzone if/switch - mam nadzieje ze bardzo dobrze wiesz co robisz i bedziesz potrafil zapewnic spojnosc wszystkich owych zagniezdzonych warunkow
Jesli zas dostales jakas gigant-funkcje z poleceniem od kolegi/przelozonego/wykladowcy: "wez to zrownolegl na 4 procki" to zapomnij co w/w napisalem -- nie tedy droga, poza 0,1% specjalnie po to zbudowanych przypadkow, nie da sie ot tak pociac funkcji/kodu na cztery bloczki i kazdy z nich odpalic na procku obok