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