Wpis z mikrobloga

via Wykop Mobilny (Android)
  • 0
Czy mogę w programie w #cpp w podfunkcji w case użyć main( ) żeby program w tym przypadku wrócił do początku maina?
Coś mi kompilator nie przepuszcza tego a z własną funkcją to działa, tylko chciałem to zmienić na maina bo trochę głupio żeby main był tylko aby wywołać jedną prawdziwie główną funkcje XD
#programowanie
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Whiskeyjack29:
goto w takich sytuacjach możesz łatwo zamienić na return, np. tak:
foo(z) {
if(warunek1) wykonaj a if(warunek2) wykonaj b if(warunek3) wykonaj c // gdzies tu return false jesli błąd
return
  • Odpowiedz
@wolodia: ok, ale czym to sie różni w zasadzie od labelki z goto, zamieniliśmy ja na zmienną i ifa, czytelność wg mnie bardzo podobna dopóki nie naudżywamy goto do skoków w różne miejsca metody.
Źle się wyraziłem chodziło mi ogólnie o ficzery z c++
@ly000 już bardziej czytelne ale teraz okazuje się że warunek2 zależy od wyniku pierwszej operacji i mamy zagnieżdżone ify albo takie samo rozwiązanie które zaproponował
  • Odpowiedz
ok, ale czym to sie różni w zasadzie od labelki z goto, zamieniliśmy ja na zmienną i ifa, czytelność wg mnie bardzo podobna dopóki nie naudżywamy goto do skoków w różne miejsca metody.


@Whiskeyjack29:

- Masz jasno zakodowany przepływ kontroli w warunkach ifa.
- Masz jasno zakodowaną zależność poszczególnych operacji - nie skaczesz do label error w losowych miejscach, ale każda kolejna operacja jest wprost zależna od
  • Odpowiedz
już bardziej czytelne ale teraz okazuje się że warunek2 zależy od wyniku pierwszej operacji i mamy zagnieżdżone ify albo takie samo rozwiązanie które zaproponował


@Whiskeyjack29: przepływ względem goto się nie zmienia. można założyć, że te ify nie są zagnieżdżone, tylko są jeden po drugim. w każdym ifie może być if(blad) return false, co jest odpowiednikiem if(blad) goto error. plusy są takie: malloc jest bliżej free, alokacja i zwalanie pamięci jest
  • Odpowiedz