[elektro] C mégegyszer (SWITCH)

Lajos Rancz lajos.rancz at gmail.com
Thu Apr 8 07:31:03 CEST 2010


Helló!

Azért vannak a gotonál szebb, átláthatóbb megoldások is. Ha jól értelmeztem
az eredeti probléma, hogy switchel választunk vmilyen típusból és ennek
megfelelő a működés. Ilyen típusú problémákra nagyon szép struktúrált,
átlátható, könnyen bővíthető megoldást nyújt a virtuális függvény C++-ban
(amit most már uC környezetben is lehet használni).

Üdv,
Lajos

2010/4/7 fabi <fabilist at gmail.com>

> A struktúrált programozók zsigerből gyűlölik a goto-t, pedig a való
> világ nem csak gyönyörűen algoritmizálható feladatokból áll.
> Egy jó helyen alkalmazott, megfelelően kommentezett goto akár
> egyszerűbbé, átláthatóbbá tehet egy programot.
> Főleg beágyazott rendszereknél, ahol inkább cél a valós események
> logikus lekövetése mint az elvont algoritmizálás, szerintem bátran
> alkalmazható a goto, persze nem ész nélkül ide oda ugrálva, azt majd
> megcsinálja a fordító optimalizáláskor...
>
> ---
> üdv,
> fabi
>
>
> SZIGETI Szabolcs írta:
> > Hali!
> >
> > A goto-val semmi baj. Viszont szerintem ha még valaha bele akarsz nyúlni
> a
> > kódba, akkor ne csinálj ilyen varázslásokat. Én már régóta az gondlom,
> hogy
> > manapság kódot nem elsősorban írunk, hanem olvasunk. (Én pl. törekszem
> arra,
> > hogy a switchben minden case utáb legyen break, mert úgy logikus és
> > áttekinthető a működése. Ha mégis, akkor hatalmas kommentben írom, hogy
> > átcsorgás van.)
> >
> > A mostani optimalizáló fordítók úgyis jobb kódot csinálnak (általában),
> mint
> > amiket mindenféle trükközéssel tudunk kézzel (sőt, a szabvány
> megoldásokat
> > nagyobb eséllyel optimalizálják), viszont ha neked, vagy bárki másnak
> később
> > bele kell nyúlni akár hibakeresés, akár továbbfejlesztés céljából,
> > beleőrülhetsz, mire kibogozod, hogy egy fél éve mit írtál.
> >
> > Szabolcs
> >
> >
> > --------------------------------------------------
> > From: "hg12345" <hg12345 at freemail.hu>
> > Sent: Wednesday, April 07, 2010 11:39 AM
> > To: <elektro at tesla.hu>
> > Subject: [elektro] C mégegyszer  (SWITCH)
> >
> >> Hi!
> >>
> >> Létezik C-s megoldás a SWITCH-en belül egy ág végrehajtása után egy
> >> meghatározott CASE ágon folytassa a program a futását?
> >>
> >> switch(a){
> >> case 1:
> >>    break;
> >>
> >> case 4:
> >>    printf("4");
> >>    goto "DEFAULT";
> >> case 8:
> >>    break;
> >>
> >> case 38:
> >>    printf("38");
> >>
> >> default:
> >>    a=0;
> >>    break;
> >> };
> >>
> >> Nem ez a program, de a default ágban van a programnak defenziv része,
> azok
> >> az ágak amik befejeződtek, itt szeretném befejezni.
> >>
> >> Az automatikusan definiált ASM címkékkel nem lehet mit kezdeni .Lxxx nem
> >> egyértelmű a megnevezése
> >>
> >> Természetesen megoldható egy plusz CIMKE bevezetésével, de egy C szerű
> >> megoldásnak jobbak örülnék.
> >>
> >> -----------------------------------------
> >>          elektro[-flame|-etc]
> >>
> >
> > -----------------------------------------
> >           elektro[-flame|-etc]
> >
>
> -----------------------------------------
>          elektro[-flame|-etc]
>


More information about the Elektro mailing list