eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR po latachRe: AVR po latach
  • Data: 2021-11-19 08:57:19
    Temat: Re: AVR po latach
    Od: Mateusz Viste <m...@x...invalid> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    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:

    if (!alokuj_bufor()) return(fail);

    if (!otworz_port()) {
    zwolnij_bufor();
    return(fail);
    }

    if (!napisz_na_port()) {
    zwolnij_bufor();
    zamknij_port();
    return(fail);
    }

    if (!odbierz_z_portu()) {
    zwolnij_bufor();
    zamknij_port();
    return(fail);
    }


    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);


    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żą.

    Mateusz

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: