eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDziwny problem z kodem w C (gcc mips/pic32)
Ilość wypowiedzi w tym wątku: 171

  • 21. Data: 2023-05-18 15:06:41
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 18/05/2023 14:59, Dawid Rutkowski wrote:
    >>>> https://en.cppreference.com/w/cpp/iterator/size
    >>>> A bodaj od 20 lat jest w boost.
    >>> Ale to trzeba zacząć C++ używać :)
    >> Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
    > I to wystarczy, żeby sizeof zaczął oznaczać liczbę elementów tablicy?

    To wystarczy aby "trzeba zacząć C++ używać".

    W przypadku oznaczania tablicy przez std::size, należy się jeszcze
    upewnić, że kompilator i bibliteki są zgodne, bodaj, z C++17, lub, że ma
    się 20 letni kompilator wspierany przez 20 letni boost, jeśli z jakiegoś
    powodu ma się 20 letni kompilator.

    > Analogicznie do dowodu nie wprost:
    > "Jedna rana stanowczo śmiertelna, ale pozostałe dadzą się wyleczyć!"

    W sensie że zamiana dwóch literek na dwa + to śmiertelna rana? Jeśli to
    coś popsuje, to i tak miałeś popusty kod wcześniej. Zwyczajowo nic nie
    popsuje.

    A mówią, że nie ma darmowych obiadów.


  • 22. Data: 2023-05-18 15:17:32
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: "Grzegorz Niemirowski" <g...@g...net>

    heby <h...@p...onet.pl> napisał(a):
    > Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.

    I od tego Marek zostanie programistą C++?

    --
    Grzegorz Niemirowski
    https://www.grzegorz.net/


  • 23. Data: 2023-05-18 15:18:31
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 18/05/2023 15:17, Grzegorz Niemirowski wrote:
    >> Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
    > I od tego Marek zostanie programistą C++?

    Nie. Zapewne dlatego wyciałeś cycta wyżej. Od tego może "zacząć C++ używać".


  • 24. Data: 2023-05-18 15:28:05
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: "Grzegorz Niemirowski" <g...@g...net>

    heby <h...@p...onet.pl> napisał(a):
    > Nie. Zapewne dlatego wyciałeś cycta wyżej. Od tego może "zacząć C++
    > używać".

    Wyciąłem, bo pisząc o zaczęciu nie miałem na myśli wykonania kroku, który
    tak naprawdę nic nie zmienia. Język kodu nie zależy od nazwy kompilatora.
    Ba, możesz nawet napisać kod i go nie skompilować. Oni tego nie sprawdzają
    :) Podobnie czytając książkę o programowaniu rozpoznasz język bez używania
    żadnego narzędzia. Kolega KS zacznie używać C++ gdy zacznie używać jego
    mechanizmy i porzuci nawyki z C.

    --
    Grzegorz Niemirowski
    https://www.grzegorz.net/


  • 25. Data: 2023-05-18 15:37:16
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 18/05/2023 15:28, Grzegorz Niemirowski wrote:
    >> Nie. Zapewne dlatego wyciałeś cycta wyżej. Od tego może "zacząć C++
    >> używać".
    > Wyciąłem, bo pisząc o zaczęciu nie miałem na myśli wykonania kroku,
    > który tak naprawdę nic nie zmienia.

    Krok ten zmienia bardzo wiele. Nagle nie masz wymówki, że się nie da
    pisać lepiej.

    W momencie jak masz C++, zrobienie buga na sizeof jest dalej możliwe,
    ale znacząco bardziej wstydliwe, a po kilku latach praktyki, praktycznie
    trudne.

    Trzymanie się tej meldy "ja od zawsze pisałem w C i nie mogę używać
    std::size" jest tym mniej sensowne im bardziej rozumiesz jaki jest koszt
    przejścia na C++. Zerowy, choć są koszta ideologiczne.

    > Język kodu nie zależy od nazwy
    > kompilatora.

    To częsciowo prawda, g++ i gcc tak naprawdę róznią się tylko detalami.

    > Ba, możesz nawet napisać kod i go nie skompilować. Oni tego
    > nie sprawdzają :) Podobnie czytając książkę o programowaniu rozpoznasz
    > język bez używania żadnego narzędzia.

    Filozofujesz.

    Prawda taka, że społecznośc programistów embedded zazwyczaj jest o mały
    krok od zamiany kijka na siekierkę i to za friko. Ale z jakiejś
    przyczyny nie chcą. I nikt, do dzisiaj, nie wyjaśnił mi jaki koszt
    ponoszą zmieniajac 2 literki w nazwie kompialtora i dostając masę nowych
    ficzerów.

    > Kolega KS zacznie używać C++ gdy
    > zacznie używać jego mechanizmy i porzuci nawyki z C.

    Nie. Mechniazmów C++ możesz używać dowolnych, w dowolnym momencie. Nikt
    nie porzuca C, nie ma takiej potrzeby. W C++ jest masa ułatwień, któe
    znakomicie przydadzą się w C bez potrzeby rezygnacji i dysonansu
    ideologicznego. std::size to jedno z setek, użytecznych w embedded,
    ułatwień, za darmo.


  • 26. Data: 2023-05-18 15:52:31
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: "Grzegorz Niemirowski" <g...@g...net>

    heby <h...@p...onet.pl> napisał(a):
    > Filozofujesz.

    Ciekawe stwierdzenie jak na kogoś, kto daje poradę odnoszącą się do innego
    języka niż używa pytający :) A potem rozważasz jaka super jest zmiana gcc na
    g++ w Makefile.

    --
    Grzegorz Niemirowski
    https://www.grzegorz.net/


  • 27. Data: 2023-05-18 15:55:53
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: Dawid Rutkowski <d...@w...pl>

    czwartek, 18 maja 2023 o 15:04:31 UTC+2 Marek napisał(a):
    > On Thu, 18 May 2023 05:13:49 -0700 (PDT), Dawid Rutkowski
    > <d...@w...pl> wrote:
    > > t w tych 75k linii kodu? Bo można i tak,
    > > choć ciekawi, jak te wyjątki obsługujesz.
    > Wyjątki obsługuje funkcja przypisana do exception handler, ją już
    > wywołuje core procesorami. Jest kilka wyjątków:
    >
    > static enum {
    > EXCEP_IRQ = 0, // interrupt
    > EXCEP_AdEL = 4, // address error exception (load or
    > ifetch)
    > EXCEP_AdES, // address error exception (store)
    > EXCEP_IBE, // bus error (ifetch)
    > EXCEP_DBE, // bus error (load/store)
    > EXCEP_Sys, // syscall
    > EXCEP_Bp, // breakpoint
    > EXCEP_RI, // reserved instruction
    > EXCEP_CpU, // coprocessor unusable
    > EXCEP_Overflow, // arithmetic overflow
    > EXCEP_Trap, // trap (possible divide by zero)
    > EXCEP_IS1 = 16, // implementation specfic 1
    > EXCEP_CEU, // CorExtend Unuseable
    > EXCEP_C2E // coprocessor 2
    > } _excep_code;
    >
    >
    > Oczywiście można po wyjątku wyjść z handlera i działać dalej ale w
    > moim przypadku handler zapamiętuje co i gdzie się wydarzyło i
    > zatrzymuje kod aż watchdog zresetuje procesor.

    A, OK, dzięki, to całkiem fajne, choć w typowych zastosowaniach uC przydaje się tylko
    do debugowania
    przekroczeń pamięci - ale to też się przyda.

    > Kiedyś na MZ zrobiłem małego OSa z ochroną pamięci, obsługą pamięci
    > wirtualnej i TBLami, ładowaniem procesów itp... Skończyło się tylko
    > na tym, że jeden proces wypisywał AAA a drugi BBB na konsoli
    > (zbieżność z początkiem innego OSa przypadkowa).

    Ja zrobiłem na ATmegę dwa wątki wywłaszczane (no bo procesy bez ochrony pamięci są
    bez sensu).
    Ale nie mam pomysłu, do czego użyć tego w praktyce.

    > Zresztą na MZ można uruchomić pełnego Linuxa więc....

    Linux, przy całym swym bogactwie, ma jedną wadę - nie jest systemem czasu
    rzeczywistego.
    A olbrzymia większość tego, co robiłem na uC, jest przynajmniej soft real-time.
    I w sumie nic dziwnego - od nie-real-time mamy PC-ty z Linuxem.


  • 28. Data: 2023-05-18 15:58:45
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: Dawid Rutkowski <d...@w...pl>

    czwartek, 18 maja 2023 o 15:06:53 UTC+2 heby napisał(a):
    > On 18/05/2023 14:59, Dawid Rutkowski wrote:
    > >>>> https://en.cppreference.com/w/cpp/iterator/size
    > >>>> A bodaj od 20 lat jest w boost.
    > >>> Ale to trzeba zacząć C++ używać :)
    > >> Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
    > > I to wystarczy, żeby sizeof zaczął oznaczać liczbę elementów tablicy?
    > To wystarczy aby "trzeba zacząć C++ używać".

    Jako przycisku do papieru ;>

    > W przypadku oznaczania tablicy przez std::size, należy się jeszcze
    > upewnić, że kompilator i bibliteki są zgodne, bodaj, z C++17, lub, że ma
    > się 20 letni kompilator wspierany przez 20 letni boost, jeśli z jakiegoś
    > powodu ma się 20 letni kompilator.

    Mój zaraz będzie 17-letni. Prawie "stara dupa" ;>

    > > Analogicznie do dowodu nie wprost:
    > > "Jedna rana stanowczo śmiertelna, ale pozostałe dadzą się wyleczyć!"
    > W sensie że zamiana dwóch literek na dwa + to śmiertelna rana? Jeśli to
    > coś popsuje, to i tak miałeś popusty kod wcześniej. Zwyczajowo nic nie
    > popsuje.

    Nie, odwrotnie.
    Zmienić dwie literki - proste, ale nie wystarczy.
    Może wystarczą następne kroki - ale one są już o wiele, wiele trudniejsze.

    Zaś "zwyczajowo" - to samo raczej nic nie poprawi. Popsuć może.


  • 29. Data: 2023-05-18 16:00:27
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 18/05/2023 15:52, Grzegorz Niemirowski wrote:
    >> Filozofujesz.
    > Ciekawe stwierdzenie jak na kogoś, kto daje poradę odnoszącą się do
    > innego języka niż używa pytający :)

    Pytający używa subsetu C++ o nazwie C, nie posiadający żadnych
    widocznych zalet względem pełnego setu.

    Istnieje bezpieczny i przeznaczony do takich zastosowań element języka
    poza tym subsetem.

    Przeniesięnie się z subsetu do przestrzeni gdzie istnieje to rozwiązanie
    jest obarczone zerowym kosztem.

    W przestrzeni tej istnieje też wiecej rozwiązań probemów, o których
    jeszcze nie wiesz, że są problemami rozwiązanymi 20 lat temu.

    > A potem rozważasz jaka super jest
    > zmiana gcc na g++ w Makefile.

    Bo to, co zgrabnie wyciąłeś, okresla koszt "zacząć C++ używać". To nie
    jest operacja zatrzymująca firmę na miesiąc. To operacja, której
    wiekszosc programistów nawet nie zauważy. Dlatego wymówka "zacząć C++
    używać" wymaga odpowiedzi, bo często podczas dysput z embedowcami
    pojawia się jako heroiczny wysiłek i zwiększenie wsadu do flasha o
    gigabajty w/g opini zasłyszanej od kolegi szwagra z sąsiedniej firmy.


  • 30. Data: 2023-05-18 16:01:44
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 18/05/2023 15:58, Dawid Rutkowski wrote:
    > Zmienić dwie literki - proste, ale nie wystarczy.
    > Może wystarczą następne kroki - ale one są już o wiele, wiele trudniejsze.

    A co jeszcze musisz zmienić *zanim* zaczniesz używać std::size, poza "++"?

    Możesz podać listę tych kroków?

    > Zaś "zwyczajowo" - to samo raczej nic nie poprawi. Popsuć może.

    A co może popsuć?

strony : 1 . 2 . [ 3 ] . 4 ... 10 ... 18


Szukaj w grupach

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: