<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Salut Razvan,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Iti multumesc pentru raspuns, voi incerca sa folosesc snippet-ul dat de tine.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
Cat despre ce am incercat eu sa fac, nu as fi avut problema de care spui tu</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
la 1. deoarece macro-ul primea ca parametru si valoarea de retur. Mai exact,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
arata asa [1], iar numele ei era RETURN_IF_ERROR(assertion, return_value);</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
[1] <a href="https://pastebin.com/Wv8AYFan" style="">https://pastebin.com/Wv8AYFan</a></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
O zi buna!</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Razvan Crainea <razvan.crainea@gmail.com><br>
<b>Sent:</b> Monday, March 16, 2020 11:13 AM<br>
<b>To:</b> Antonio-Dan MACOVEI (94298) <antonio_dan.macovei@stud.acs.upb.ro>; Sisteme de Operare <so@cursuri.cs.pub.ro><br>
<b>Cc:</b> Dorin Geman <dorin.geman@rosedu.org><br>
<b>Subject:</b> Re: [so] [Tema 2][Windows] Checkstyle error doar pe Windows</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Salutare!<br>
<br>
Într-adevăr, nu este recomandată utilizarea instrucțiunilor de<br>
modificare a flow-ului programului (return sau goto) în macro-uri din<br>
două motive:<br>
1. limitează modul în care poți folosi macro-ul: spre exemplu, dacă în<br>
cadrul macro-ului folosești un `return -1`, atunci vei putea folosi<br>
macro-ul respectiv doar în funcții care întorc valori întregi, nu și<br>
funcții care nu întorc nimic, sau întorc pointeri<br>
2. uitându-te la locurile în care se folosești macro-ul, este greu de<br>
dedus ce face; la DIE() este simplu, că știi exact că execuția<br>
programului moare (de acolo și numele DIE), dar dacă folosești return<br>
sau goto, e mai greu de intuit - trebuie verificată definiția<br>
macro-ului, lucru care face codul mai greu de citit.<br>
<br>
Pentru a folosi în continuare macro-ul și a păstra calitatea codului,<br>
poți modifica DIE să primească o *instrucțiune* pe care să o apeleze<br>
în cazul în care condiția este adevărată. Spre exemplu, poți face ceva<br>
de genul ăsta[2], unde este specificat explicit flow-ul programului.<br>
<br>
[2] <a href="https://gitlab.cs.pub.ro/snippets/37">https://gitlab.cs.pub.ro/snippets/37</a><br>
<br>
Numai bine,<br>
<br>
On Mon, Mar 16, 2020 at 4:52 AM Antonio-Dan MACOVEI (94298) via so<br>
<so@cursuri.cs.pub.ro> wrote:<br>
><br>
> Chiar ma uitasem si eu pe linkul acela, insa am zis ca nu merita ceva de genul la mine.<br>
> Nu fac exit pentru ca trebuie sa propag codul de retur mai departe fara sa opresc executia intregului program. Folosesc acel macro pentru a evita if-urile care verifica o valoare de retur si intorc un cod, exact ca si DIE.<br>
> Pe linux cred ca s-a oprit din tipat cand am pus acel do while ca la DIE.<br>
><br>
> Get Outlook for Android<br>
><br>
> ________________________________<br>
> From: Dorin Geman <dorin.geman@rosedu.org><br>
> Sent: Sunday, March 15, 2020 10:54:22 PM<br>
> To: Antonio-Dan MACOVEI (94298) <antonio_dan.macovei@stud.acs.upb.ro>; Sisteme de Operare <so@cursuri.cs.pub.ro><br>
> Subject: Re: [so] [Tema 2][Windows] Checkstyle error doar pe Windows<br>
><br>
><br>
><br>
> On Sun, Mar 15, 2020 at 9:40 PM Antonio-Dan MACOVEI (94298) via so <so@cursuri.cs.pub.ro> wrote:<br>
><br>
> Salut,<br>
><br>
> Am folosit un MACRO atat pe Linux, cat si pe Windows (asemanator cu cel de DIE), insa doar pe Windows primesc urmatoarea eroare de coding style pe vmchecker:<br>
><br>
> WARNING:MACRO_WITH_FLOW_CONTROL: Macros with flow control statements should be avoided<br>
><br>
> Diferenta dintre DIE si functia mea este ca in loc de exit eu fac return.<br>
> Ar trebui sa modific, sau se poate adauga o exceptie in checkstyle?<br>
><br>
> Salut,<br>
><br>
> De ce nu faci exit() în loc de return?<br>
> Din ce am citit, return și goto __NU__ sunt recomandate în macro-uri. Am găsit un mesaj[0] care prezintă un truc, în cazul în care chiar ții la acel return.<br>
> Totuși, este ciudat ca nu-ți dă aceeași eroare și pe Linux, tocmai am testat cu un macro ce folosește return și sare imediat checkstyle-ul.<br>
><br>
> Spor,<br>
> Dorin Geman, 331CA<br>
><br>
> [0]: <a href="https://lore.kernel.org/patchwork/patch/498381/">https://lore.kernel.org/patchwork/patch/498381/</a><br>
> _______________________________________________<br>
> <a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a><br>
<br>
<br>
<br>
-- <br>
Răzvan Crainea<br>
</div>
</span></font></div>
</body>
</html>