<div dir="ltr">Salut!<br>Nu m-am prins daca ai intrebat sau nu ceva, insa pot sa spun ca nu este obligatoriu sa:<br>- folosim DIE (de exemplu in caz ca vrem sa dezalocam memoria, nu este prea ok)<br>- intoarcem neaparat codul intors de apelul de sistem, in cazul unei erori<br><br>Pentru partea cu DIE, poti tu pur si simplu sa pui exit(-1) in macro (sau sa ai un #define FAIL_CODE -1) si asa mereu vei avea un cod de return negativ (asa cum se recomanda si in enuntul temei). Pentru a elibera si memoria in cazul unei erori sau a returna exact codul apelului de sistem care a generat eroarea in program, iti poti face propriul mecanism (de exemplu o functie helper, un macro DIE modificat sau un efect de tip waterfall in cazul unei erori).<br><div style="text-align:justify"><span style="font-size:12.8px">Ca sa avem comportament diferit in functie de platforma (de exemplu sa folosim <span style="font-size:12.8px">GetLastError() pe Windows) ar trebui sa avem <span style="color:rgb(51,51,51);font-family:Verdana,"Lucida Grande",Lucida,Helvetica,Arial,sans-serif;font-size:13px;text-align:justify">directive de preprocesare de forma </span></span></span><font color="#333333" face="Verdana, Lucida Grande, Lucida, Helvetica, Arial, sans-serif">#ifdef _WIN32, ceea ce este interzis la aceasta tema.<br><br>Spor!<br>Adrian Pop</font></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-03-06 16:16 GMT+02:00 Mihai Popescu via so <span dir="ltr"><<a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">Bună ziua,<br><br>Ne este spus în laboratoare și teme să folosim macro-ul DIE pentru verificarea codului de eroare întors de un apel de sistem.<br>Am observat că în resurse [1], [2] este implementat apelând exit(EXIT_FAILURE). Acest lucru face ca procesul să intoarcă de fiecare dată 1, nu codul de eroare întors de un apel de sistem, deoarece EXIT_FAILURE este definit astfel în stdlib.h :<br>#define EXIT_FAILURE   1  /* Failing exit status.  */<br><br>Codul de eroare poate fi luat:<br>  - în Linux din errno, macro definit în errno.h<br>  - în Windows apelând GetLastError()<br><br>Pe acesta ar trebui să îl returneze și procesul.<br><br>[1] <a href="https://ocw.cs.pub.ro/courses/so/laboratoare/resurse/die" target="_blank">https://ocw.cs.pub.ro/courses/<wbr>so/laboratoare/resurse/die</a><br>[2] <a href="https://ocw.cs.pub.ro/courses/so/laboratoare/resurse/c_tips" target="_blank">https://ocw.cs.pub.ro/courses/<wbr>so/laboratoare/resurse/c_tips</a><br><br>O zi bună,<br>Mihai Popescu</div>
<br>______________________________<wbr>_________________<br>
<a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/<wbr>so/info/lista-discutii</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr">Adrian Pop</div><div>Student @University Politehnica of Bucharest</div></div></div></div>
</div>