Snaha o lepsiu nahradu za goto, was: goto considered harmful; was: ceckovy kviz 2 (hardcore)

Pavel Hudeček edizon na seznam.cz
Pátek Září 8 14:32:15 CEST 2023


:-) No to je už taky extra blázinec...
Takže každej kdo to uvidí, bude muset buď zkusit jak se tohle chová, 
nebo se podívat do normy, zda ten break breakne z do, nebo ze swithe..

Když switch nestačí, tak použít if ... else if ...

A konkrétně tady prostě mít na obou místech b=12.
Pak budou všechny sekce swithe obsahovat a=... + b=, což je to, co 
všechny reálně dělají. A bude to jasné bez podrobného zkoumání a čtení 
komentářů.

PH

Dne 08.09.2023 v 14:10 Jan Waclawek napsal(a):
> Jedna zo situacii ked goto pouzivam je vtedy, ak v switch/case je niekolko
> pripadov, ktore maju aj separatnu aj spolocnu cast; a niekolko dalsich,
> ktore su uplne odlisne (to je castokrat nasledok spracovania prijatych
> sprav od nejakeho ineho geretu, kazdu spravu treba nejako separatne
> spracovat a potom treba odpovedat, a mnohe ale nie vsetky odpovede su
> rovnake, trebars "pocul som").
>
> Tak som pod dojmom predchadzajucej diskusie zauvazoval, ci nezacnem
> pouzivat toto:
> volatile unsigned char a, b;
>
> int main(void) {
>    switch(a) {
>      do {  // only to be able to break into a common epilogue
>        case 0:
>          a = 5;
>          break;
>        case 1:
>          a = 7;
>          break;
>      } while(0);  // common epilogue for cases 0 and 1
>        b = 12;
>        break;
>
>      // now the separate cases
>      case 2:
>        a = 10;
>        b = 4;
>        break;
>      default:
>        a = 1;
>        b = 23;
>        break;
>    }
> }


Další informace o konferenci Hw-list