2014-03-09 19:22 GMT+02:00 Andrei Datcu <[email protected]>:

> 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
_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Raspunde prin e-mail lui