-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
e.net!feeder.erje.net!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed8.new
s.xs4all.nl!news.uzoreto.com!aioe.org!fJ3fCem/Ge388nCVHersJA.user.46.165.242.75
.POSTED!not-for-mail
From: Mateusz Viste <m...@x...invalid>
Newsgroups: pl.misc.elektronika
Subject: Re: AVR po latach
Date: Fri, 19 Nov 2021 10:01:37 +0100
Organization: . . .
Message-ID: <20211119100137.77d2363c@mateusz>
References: <smreh5$3aj$1@dont-email.me> <619508e5$0$552$65785112@news.neostrada.pl>
<a...@n...neostrada.pl>
<sn3drv$13k$2@dont-email.me>
<a...@n...neostrada.pl>
<sn3h62$qna$1@dont-email.me>
<a...@n...neostrada.pl>
<sn3lbt$q5v$1@dont-email.me>
<0...@g...com>
<sn5ul0$2vi$1@dont-email.me> <2...@m...lan>
<sn602a$cil$1@dont-email.me> <20211118180102.29f911cc@mateusz>
<sn61hi$q5d$1@dont-email.me> <20211118182857.67ab36fc@mateusz>
<sn632k$7cr$1@dont-email.me> <20211118191941.5cd5cbc8@mateusz>
<sn66n0$2i0$1@dont-email.me> <20211118203536.2ed957df@mateusz>
<1eohq79peodw1.1sh0vipcxxlku$.dlg@40tude.net>
<20211119085719.54466a8e@mateusz>
<189k71se188y6.1s4j6k5c8x32e$.dlg@40tude.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Injection-Info: gioia.aioe.org; logging-data="23676";
posting-host="fJ3fCem/Ge388nCVHersJA.user.gioia.aioe.org";
mail-complaints-to="a...@a...org";
X-Newsreader: Claws Mail 3.18.0 (GTK+ 2.24.32; x86_64-suse-linux-gnu)
X-Notice: Filtered by postfilter v. 0.9.2
Xref: news-archive.icm.edu.pl pl.misc.elektronika:768515
[ ukryj nagłówki ]2021-11-19 o 09:43 +0100, J.F napisał:
> w przypadku sukcesu tez mozemy chciec zwolnic zasoby, wiec raczej
>
> int err_code=0;
>
> if (!buf) {err_code=BUF_ALL; goto poleglem;}
> if (!napisz_na_port() {err_code=PORT_Write; goto poleglem;}
> if (!odbierz_z_portu() {err_code=PORT_READ; goto poleglem;}
>
> err_code=SUCCESS
>
> poleglem:
>
> if (buf) zwolnij_bufor();
> if (port) zamknij_port();
> return(err_code);
Detale zależą już od założeń konkretnego przypadku - API może
przewidywać, że po nawiązaniu komunikacji port pozostaje otwarty na
potrzeby dalszych operacji. Jeśli nie, to oczywiście masz słuszność.
> Mozna tez
> int err_code=0;
>
> if (!buf) err_code=BUF_ALL;
> if (!err_code && !napisz_na_port()) err_code=PORT_Write;
> if (!err_code && !odbierz_z_portu()) err_code=PORT_READ;
>
> err_code=SUCCESS
>
> if (buf) zwolnij_bufor();
> if (port) zamknij_port();
> return(err_code);
>
> no i niby poprawniej, tylko program niepotrzebnie sprawdza pare razy
> blad ... a co tam, szybkie procki mamy
Można. Tylko po co? Aby zmniejszyć czytelność kodu i dodać
niepotrzebnych kroków, coby za wszelką cenę uniknąć goto?
> ewentualnie
>
> int err_code=0;
> if (!buf) err_code=BUF_ALL;
> else if (!napisz_na_port()) err_code=PORT_Write;
> else if (!odbierz_z_portu()) err_code=PORT_READ;
>
> err_code=SUCCESS
>
> if (buf) zwolnij_bufor();
> if (port) zamknij_port();
> return(err_code);
>
> Superczytelne :-P
No właśnie, czytelność na tyle słaba, że zapomniałeś o końcowym "else" i
awaria gotowa. A w efekcie kompilator i tak przetłumaczy to wszystko
na kilka goto...
Mateusz
Następne wpisy z tego wątku
- 19.11.21 10:18 heby
- 19.11.21 10:53 J.F
- 19.11.21 10:59 Mateusz Viste
- 19.11.21 11:07 Mateusz Viste
- 19.11.21 11:34 Mateusz Viste
- 19.11.21 13:37 Astralny Rębajło
- 19.11.21 17:08 heby
- 19.11.21 20:38 Mateusz Viste
- 19.11.21 21:19 heby
- 19.11.21 21:54 Mateusz Viste
- 19.11.21 22:00 Marek
- 19.11.21 22:06 heby
- 19.11.21 22:11 heby
- 19.11.21 22:19 Dawid Rutkowski
- 19.11.21 22:54 Mateusz Viste
Najnowsze wątki z tej grupy
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
Najnowsze wątki
- 2025-01-23 5G Apokalipsa - nie tylko dla tutejszych przeżuwaczy podpiczników
- 2025-01-23 wodor
- 2025-01-23 Zawór grzybkowy - jaki producent
- 2025-01-23 Warszawa => Expert IT Recruiter 360 <=
- 2025-01-23 Warszawa => Key Account Manager IT <=
- 2025-01-23 Citi Handlowy promocja na kartę kredytową
- 2025-01-22 Gdańsk => System Architect (Java background) <=
- 2025-01-22 Katowice => Senior Field Sales (system ERP) <=
- 2025-01-22 Warszawa => Java Developer <=
- 2025-01-22 pokolenie Z
- 2025-01-22 Wyświtlacz ramki cyfrowej
- 2025-01-22 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A
- 2025-01-22 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2025-01-22 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-22 oferta na ubezpieczenie OC życie prywatne