-
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ć?