-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
e.net!feeder.erje.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!
peer.ams1.xlned.com!news.xlned.com!peer01.ams4!peer.am4.highwinds-media.com!new
s.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-sp
o-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: "J.F" <j...@p...onet.pl>
Subject: Re: AVR po latach
Newsgroups: pl.misc.elektronika
User-Agent: 40tude_Dialog/2.0.15.1
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
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>
Date: Fri, 19 Nov 2021 09:43:16 +0100
Message-ID: <189k71se188y6.1s4j6k5c8x32e$.dlg@40tude.net>
Lines: 91
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.30.109.51
X-Trace: 1637311394 unt-rea-b-01.news.neostrada.pl 522 83.30.109.51:55699
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 3914
Xref: news-archive.icm.edu.pl pl.misc.elektronika:768512
[ ukryj nagłówki ]On Fri, 19 Nov 2021 08:57:19 +0100, Mateusz Viste wrote:
> 2021-11-18 o 20:56 +0100, J.F napisał:
>> Jak mam obsluge bledow w funkcji, to sie zaczynaja wyjscia mnozyc.
>> Bo bledow moze byc mnostwo - np brak portu, brak prawa dostepu do
>> portu, brak odpowiedzi w zalozonym czasie, niezrozumiala odpowiedz,
>> zgloszony bład przez urzadzenie na porcie, błędna wartosc.
>
> W tym wypadku też mnogość wyjść może być problemem, bo szybko wychodzą
> tego typu rzeczy:
[...]
> i prędzej czy później o czymś zapomnisz. Tzn. może nie ty, ale ja
> na pewno. Zamiast tego można w ten sposób:
>
> void *buf = NULL;
> int port = 0;
>
> buf = alokuj_bufor();
> if (!buf) goto poleglem;
>
> if (!napisz_na_port() goto poleglem;
>
> if (!odbierz_z_portu() goto poleglem;
>
> return(sukces);
>
> poleglem:
>
> if (buf) zwolnij_bufor();
> if (port) zamknij_port();
> return(fail);
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);
> albo, jeśli kto naprawdę uczulony na goto, to całość ubrać w jakąś
> niby-pętlę która wykonuje się raz, a wychodzić z niej breakiem...
> Ale
> to już kombinowanie na siłę, aby tylko nie zhańbić się goto przed
> pryszczatą młodzieżą.
Jak krokow wiecej to moze byc nieglupie - przygotowac taki
mini program do wykonania.
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
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
Gorzej, jak sie drzewko decyzyjne komplikuje ...
J.
Następne wpisy z tego wątku
- 19.11.21 09:44 heby
- 19.11.21 10:01 Mateusz Viste
- 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
Najnowsze wątki z tej grupy
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
- Płytki Milkv-Duo
- Światłowód między budynkami
- POtrzebny bufor 3.3<>5V, jedonkieruowy, trójstanowy, wąski
- retro
- Bezprzewodowe polączenie Windows z projektorem
- rozklejanie obudowy
- Prośba o identyfikację komponentu
- Smart gniazdko straciło na zasięgu wifi?
- Smart gniazdko straciło zasięg wifi?
- nurtuje mnie
- dziwna sprawa...
Najnowsze wątki
- 2024-11-11 Wyważanie kół rowerowych
- 2024-11-11 Kosz, gdzie??
- 2024-11-11 Coraz mniej ludzi robi prawo jazdy
- 2024-11-11 Opole => SAP HANA Cloud Dev / Data Engineer <=
- 2024-11-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-11-11 Lublin => Senior PHP Developer <=
- 2024-11-11 Marki => Senior PHP Symfony Developer <=
- 2024-11-11 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-11 Gliwice => Specjalista ds. public relations <=
- 2024-11-11 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-11 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-11-11 Warszawa => Sales Development Representative (in German) <=
- 2024-11-11 Marsz niepodległości
- 2024-11-08 Belka
- 2024-11-09 pierdolec na punkcie psa