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