[so] [Tema 2][Windows] Checkstyle error doar pe Windows

Razvan Crainea razvan.crainea at gmail.com
Mon Mar 16 15:42:27 EET 2020


OK, dar dacă funcția nu întorcea nimic (void)? Ar fi trebuit să
folosești ceva de genul RETURN_IF_ERROR(assertion,);, ceea ce nu este
tocmai intuitiv.

Spor la temă!


On Mon, Mar 16, 2020 at 2:58 PM Antonio-Dan MACOVEI (94298)
<antonio_dan.macovei at stud.acs.upb.ro> wrote:
>
> 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.crainea at gmail.com>
> Sent: Monday, March 16, 2020 11:13 AM
> To: Antonio-Dan MACOVEI (94298) <antonio_dan.macovei at stud.acs.upb.ro>; Sisteme de Operare <so at cursuri.cs.pub.ro>
> Cc: Dorin Geman <dorin.geman at 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 at 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.geman at rosedu.org>
> > Sent: Sunday, March 15, 2020 10:54:22 PM
> > To: Antonio-Dan MACOVEI (94298) <antonio_dan.macovei at stud.acs.upb.ro>; Sisteme de Operare <so at 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 at 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



--
Răzvan Crainea


More information about the so mailing list