[FreeBSD] goto a forrasban?

Nohl Attila Rajmund Attila.Nohl at eth.ericsson.se
2001. Már. 27., K, 17:12:10 CEST


On Tue, 27 Mar 2001, Aries wrote:

> Hell!
>
> Hirtelen felindulasbol a /usr/src/sys -ben rakerestem a qsort -ra. Meg is
> talaltam, es egy erdekes dolgot vettem eszre: hasznaljak a goto utasitast!
> Gondolom vmi oka csak van ennek a csunyasagnak.  Vki meselje el legyenszives!

A forras ismerete nelkul: kivetelkezeles.
Pl.:
void bazi_hosszu_fv() {
 ...
 f=fopen("ize");
 bigyo=malloc(sok*sok);

 if (...) {
        while(...) {
                <olvasas a file-bol>;
                if (sikertelen) goto vege;
                }
        }
 ... (meg nehany fentihez hasonlo szerkezet)
vege:
 fclose(f);
 free(bigyo);
 ...
}

Ugyan ki lehetne kerulni a goto-t ugy hogy csinalunk egy valtozot, ami
jelzi, hogy hiba tortent, es utana _minden_ egyes elagazasnal, ciklusnal
meg kene nezni, hogy volt-e mar hiba, vagy sem. Tokeletesen
olvashatatlanna tenne a kodot. C++ -ban vagy Java-ban vagy Eiffel-ben
vagy Ada-ban lehetne kivetelt dobni, a vegen meg elkapni, de C-ben nincs
ilyen. Java-ban pl. nem is kell vizsgalni, hogy sikeres volt-e az
olvasas, dob a rendszer magatol egy IOException-t.

                                Bye,NAR
-- 
"Beware of bugs in the above code; I have only proved it correct, not
 tried it."




További információk a(z) BSD levelezőlistáról