[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