OT - Prosim o radu s C
Jindrich Kubec
kubecj@asw.cz
Úterý Srpen 29 21:17:56 CEST 2006
At 20:54 29.8.2006, Jiri Foldyna wrote:
>Vidim, ze jste Pascalem nepoliben :-)
No este ze tak ;)
>Zdrojak, ktery jste uvedl vyse, implementuje range-check, ktery se v Pascalu
>da direktivou kompilatoru ve zdrojaku prubezne zapinat/vypinat. Krome toho
>muzete samozrejme pouzit globalni nastaveni pro range-check. Jediny rozdil
>je v tom, ze misto Vaseho else pouzijete osetreni Exception. A samozrejme,
>uplne stejny postup muzete pouzit i v Pascalu, s tim, ze si range-check
>vypnete.
Cela moje diskuse s p. Waclawkem vysla z toho, ze jsem prohlasil, ze je
odpudiva pascalstina, kdyz je delka pole soucasti typu, na coz mi bylo
odporovano, ze kvuli tomu, ze to C nehlida, ze je tolik buffer overrunu. A
pak to jelo. Tj. bavim se celou dobu o mojem tvrzeni, ze automaticky range
check na poli je nesmysl a zbytecnost po pojidace kolacu. ;-)
>Nikoliv, v tomto konkretnim priklade ne (samozrejme pokud je definovana
>konstanta rozumna_hodnota). Ale napr. pokud volate externi proceduru/funkci,
>kde limity indexu neznate (neboli neznate konstantu rozumna_hodnota), je
>nanejvys vhodne osetreni vyjimky pouzit. Stejne tak v pripade dynamickych
>poli nebo pointerovych operaci nad cizimi buffery.
Mno ale to se dostavame nekam uplne jinam. Tady se opravdu muzeme dostat k
tomu, co je 'krasna teorie' - tj. dostanu objekt a ten se postara, popr.
dostanu objekt, ktery se nepostara, ale dostanu staraci funkce nebo si je
napisu podle spravne dokumentace. Nebo praxe - napsalo to prase a ja se
kvuli tomu muzu zblaznit.
Doufam, ze se muzeme shodnout aspon na tom, ze v okamziku, kdy pouziju
'spatny' pointer, tak uz je pozde cokoli resit - exception me nezachrani.
Takze chyby preteceni bufferu apod. me netrapi. A moje oblibene -
nedostatecna dokumentace a 'vecne' smycky, tak tam mi zadny runtime
tentononc nepomuzou.
Jindroush (kubecj@avast.com)
http://www.kostky.org - Pro fany stavebnic LEGO.
Další informace o konferenci Hw-list