[so] Funcii / macro-uri bazate pe DIE
Razvan Crainea
razvan.crainea at gmail.com
Sun Mar 9 19:38:29 EET 2014
2014-03-09 19:22 GMT+02:00 Andrei Datcu <datcuandrei at gmail.com>:
> Este indicat/elegant să creăm niște wrappere proprii bazate pe anumite
> funcții de sistem care să includă apelul macro-ului DIE?
> De exemplu:
>
> in loc de:
>
> char *pointer = malloc(70);
> DIE (pointer == NULL, "Eroare la alocare");
>
> sa avem:
>
> char *pointer = my_malloc(70);
>
> void * my_malloc(size_t nmb){
>
> void * result = malloc(nmb);
> DIE(pointer == NULL, "Eroare la alocare");
> return result;
> }
>
Salut, Andrei!
Nu mi se pare mai elegant, ba chiar văd câteva probleme în abordarea
propusă:
* Pierzi informațiile legate de locația în care a apărut eroarea. Dacă la
un moment dat malloc-ul o să întoarcă NULL, o să-ți fie greu să-ți dai
seama care linie din cod a generat eroarea respectivă. O alternativă ar fi
să folosești un macro în loc de funcție, sau să transmiți linia și funcția
ca parametru wrapper-ului.
* Deși nu e cazul la temele voastre, dacă o funcție întoarce eroare nu
înseamnă întotdeauna că trebuie să terminați programul.
* Codul tău ar fi mult mai greu de citit. Dacă cineva se uită în codul tău,
va trebui să analizeze ce face fiecare wrapper my_*, deci va fi mult mai
greu de urmărit.
* Este mai ineficient din punct de vedere al performanței.
Spor!
--
Răzvan Crainea
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20140309/757e9464/attachment.html>
More information about the so
mailing list