[so] Macro-ul DIE - improved

Razvan Crainea razvan.crainea at gmail.com
Sun Mar 22 22:09:58 EET 2015


On Sun, Mar 22, 2015 at 9:51 PM Adrian Stanciu via so <so at cursuri.cs.pub.ro>
wrote:

> 2015-03-22 17:08 GMT+02:00 Razvan Deaconescu via so <so at cursuri.cs.pub.ro
> >:
> > Marius Ungureanu <therzok at gmail.com> writes:
> >> 2015-03-22 13:04 GMT+02:00 Razvan Deaconescu via so <
> so at cursuri.cs.pub.ro>:
> >>> Aia e o aberație a Valgrind-ului. Nu recomand să compensăm un neajuns
> >>> al unui software cu macro-uri complicate sau alte construcții
> >>> convolute. Keep it simple, make it happen, laugh in the face of
> >>> danger.
> >>
> >> Sterg atunci cele doua macro-uri de pe wiki?
> >
> > Din punctul meu de vedere, da. Să vedem, însă, ce zic și alte persoane,
> > asistenți sau studenți.
> >
>
> Salut Marius,
>
> Am de făcut o observație la variantele tale pentru macro-ul DIE:
> există posibilitatea ca una dintre funcțiile de cleanup să modifice
> valoarea lui errno iar în final mesajul de eroare afișat să nu aibă
> nicio legătură cu eroarea inițială. O soluție ar fi folosirea unui
> mecanism de save-restore pentru errno.
>
> Variantele tale sunt ceva mai complexe, și vor încărca puțin codul.
> Având în vedere că macro-ul apelează exit() iar resursele alocate sunt
> automat eliberate, nu le văd foarte bine utilitatea. Un aspect bun pe
> care îl văd este preocuparea de a elibera toate resursele alocate.
>
> Salut!

Din punctul meu de vedere, macro-ul DIE() ar trebui folosit doar în
cazurile în care un apel de sistem eșuează și programul nu ar trebui să mai
facă absolut nicio operație, nici măcar eliberarea resurselor, pentru că
acestea sunt oricum eliberate de sistemul de operare.

Folosirea unui macro de tipul DIE_CB() pentru operații mai complexe mi se
pare un abuz și cred că ar trebui evitat. Eu sunt pentru ștergerea
macro-urilor DIE_CB() de pe wiki.

Cheers,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20150322/98e97349/attachment.html>


More information about the so mailing list