Salut Razvan,

Iti multumesc pentru raspuns, voi incerca sa folosesc snippet-ul dat de tine.

Cat despre ce am incercat eu sa fac, nu as fi avut problema de care spui tu
la 1. deoarece macro-ul primea ca parametru si valoarea de retur. Mai exact,
arata asa [1], iar numele ei era RETURN_IF_ERROR(assertion, return_value);

[1] https://pastebin.com/Wv8AYFan

O zi buna!

________________________________
From: Razvan Crainea <razvan.crai...@gmail.com>
Sent: Monday, March 16, 2020 11:13 AM
To: Antonio-Dan MACOVEI (94298) <antonio_dan.maco...@stud.acs.upb.ro>; Sisteme 
de Operare <so@cursuri.cs.pub.ro>
Cc: Dorin Geman <dorin.ge...@rosedu.org>
Subject: Re: [so] [Tema 2][Windows] Checkstyle error doar pe Windows

Salutare!

Într-adevăr, nu este recomandată utilizarea instrucțiunilor de
modificare a flow-ului programului (return sau goto) în macro-uri din
două motive:
1. limitează modul în care poți folosi macro-ul: spre exemplu, dacă în
cadrul macro-ului folosești un `return -1`, atunci vei putea folosi
macro-ul respectiv doar în funcții care întorc valori întregi, nu și
funcții care nu întorc nimic, sau întorc pointeri
2. uitându-te la locurile în care se folosești macro-ul, este greu de
dedus ce face; la DIE() este simplu, că știi exact că execuția
programului moare (de acolo și numele DIE), dar dacă folosești return
sau goto, e mai greu de intuit - trebuie verificată definiția
macro-ului, lucru care face codul mai greu de citit.

Pentru a folosi în continuare macro-ul și a păstra calitatea codului,
poți modifica DIE să primească o *instrucțiune* pe care să o apeleze
în cazul în care condiția este adevărată. Spre exemplu, poți face ceva
de genul ăsta[2], unde este specificat explicit flow-ul programului.

[2] https://gitlab.cs.pub.ro/snippets/37

Numai bine,

On Mon, Mar 16, 2020 at 4:52 AM Antonio-Dan MACOVEI (94298) via so
<so@cursuri.cs.pub.ro> wrote:
>
> Chiar ma uitasem si eu pe linkul acela, insa am zis ca nu merita ceva de 
> genul la mine.
> 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.
> Pe linux cred ca s-a oprit din tipat cand am pus acel do while ca la DIE.
>
> Get Outlook for Android
>
> ________________________________
> From: Dorin Geman <dorin.ge...@rosedu.org>
> Sent: Sunday, March 15, 2020 10:54:22 PM
> To: Antonio-Dan MACOVEI (94298) <antonio_dan.maco...@stud.acs.upb.ro>; 
> Sisteme de Operare <so@cursuri.cs.pub.ro>
> Subject: Re: [so] [Tema 2][Windows] Checkstyle error doar pe Windows
>
>
>
> On Sun, Mar 15, 2020 at 9:40 PM Antonio-Dan MACOVEI (94298) via so 
> <so@cursuri.cs.pub.ro> wrote:
>
> Salut,
>
> 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:
>
> WARNING:MACRO_WITH_FLOW_CONTROL: Macros with flow control statements should 
> be avoided
>
> Diferenta dintre DIE si functia mea este ca in loc de exit eu fac return.
> Ar trebui sa modific, sau se poate adauga o exceptie in checkstyle?
>
> Salut,
>
> De ce nu faci exit() în loc de return?
> 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.
> 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.
>
> Spor,
> Dorin Geman, 331CA
>
> [0]: https://lore.kernel.org/patchwork/patch/498381/
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii



--
Răzvan Crainea
_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Raspunde prin e-mail lui