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
