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.maco...@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.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 -- Răzvan Crainea _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii