-
Data: 2023-05-22 16:05:38
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 22/05/2023 15:36, J.F wrote:
>> std::size() jest znacznie bardziej przejrzysty, niż sizeof/sizeof i to
> A zwraca wynik w bajtach, w elementach, czy to się po prostu wie? :-)
Zwraca rozmiar.
Dla różnych typów zachowa się to jak zahardkodowana stała, zawołanie
metody obiektu albo zostanie policzone na etapie kompilacji. Dzięki
magii C++ wybór implementacji jest automatyczny.
Ale to bez znaczenia, piszesz na poziomie na którym interesuje Cie
*rozmiar* i już. Stringa, tablicy, wektora, listy. Rozmiar. Cokolwiek to
oznacza.
To jest właśnie wysokopoziomowe określenie potrzeby.
W dodaku działa tak samo dobrze dla tablic i dla znacznie bardziej
skomplikowanych kontenerów czy nawet głupich stringów. Czyli Twój kod
staje sie bardziej generyczny i łatwiejszy w analizie. Do tego stopnia,
że templateowa funkcja, w której jest std::size(), działa dla szerokiego
zakresu danych wejściowych.
>> wystarczy dla podniesienia jakosci i bezpieczeństwa. Takich konstrukcji
>> jest wiele w C++ i nie operaja się one o jakieś trudne do ogarnięcia
>> mechanizmy. Są wręcz trywialne.
> Chyba, ze złośliwy programista przedefiniuje, bo może :-)
To samo może i w C.
Widziałem kod gdzie było:
#define TRUE 0
Zostawione w 1 pliku cpp na złość, przez niemiłego kodera-hackera.
Gdybym nie miał tego pliku w historii to bym uznał to za jakas
anegdotkę, a jednak kosztowało to kogoś dzień debugowania. Tak, trafiają
się w tym zawodzie idioci, schizofrenicy, hackerzy, zarozumialcy,
złośnicy. Mamy skuteczne metody ich eliminacji i utrudniania takich
sabotaży.
>> Nikt nie nakazuje używania skomplikowanego dziedziczenia czy operatorów.
>> Nikt. To kwestia wyboru przez programistę. Mądry programita nie wybierze
>> ich tylko dla beki. A na niemądrych jest lint i code review.
> No nie wiem, czy zauważy, ze size() działa w danym obiekcie inaczej,
> albo ze "+" oznacza teraz odejmowanie :-)
Nie, ponieważ:
a) programiści w zespołach nie są względem siebie złosliwi w normalej
sytuacji. A jak są, drzwi otwarte.
b) sami ustalają co można, a co nie, używać i z czym czują się komfortowo.
c) świadomośc tego jak coś działa w detalach jest przeciwieństwem
współczesnego pisania wysoko abstrakcyjnego kodu
d) są do tego unit testy, aby pilnować takich dupereli
e) istotą size() jest to, aby działało w kazdym obiekcie/typie tak, jak
tego się spodziewasz po słowie "rozmiar".
Jedną z najtrudniejszych sztuczek jakie miałem w swojej karierze, jako
osoba ucząca nowych członków zespołu, to była potrzeba wyplenienia z
nich potrzeby wiedzy o tym jak coś działa w środku. Przestawienie
programisty C z asemblera na myślenie abstrakcyjne jest nadludzkim
wysiłkiem i nie w każdej sytuacji udało się. Wielu z nich nie potrafi
inaczej myśleć niż pointerami, przez co współczesny kod C++ traktują
dokładnie tak jak połowa ludzi w tym wątku - z wyparciem i urojeniami na
temat jego wydajności.
Następne wpisy z tego wątku
- 22.05.23 16:32 heby
- 22.05.23 18:08 J.F
- 22.05.23 18:29 heby
- 22.05.23 21:30 J.F
- 22.05.23 22:29 heby
- 23.05.23 15:10 JDX
- 23.05.23 15:27 JDX
- 23.05.23 15:35 Grzegorz Niemirowski
- 23.05.23 15:56 heby
- 23.05.23 16:00 heby
- 23.05.23 16:11 Grzegorz Niemirowski
- 23.05.23 16:22 heby
- 23.05.23 16:35 Grzegorz Niemirowski
- 23.05.23 16:52 heby
- 23.05.23 17:21 Grzegorz Niemirowski
Najnowsze wątki z tej grupy
- "Teleportacja" polskich statków na pd. Bałtyku - rosyjska zabawa w zakłócanie GPS, Galileo, Beidou i GLONASS
- W trakcie porwania prez. Maduro wojsko USONA użyło tajnej broni masowego rażenia: Discombobulator
- antena gsm - kabel - antena gsm
- PID - jeszcze raz
- Zlacze w mikrofonie z lat 80-tych
- Żywica żółknie od UV i wody :(
- Zawory termostatyczne
- Schemat automatyki
- Teoretyczne zagadnienie - ogrzewanie budynku
- Zagadka radiowa
- Prostownik
- Nowy akumulator Donut Lab
- Pilot do zamka/bramy
- Jaka myjka ultradźwiękowa?
- Retro organizer ale współcześnie
Najnowsze wątki
- 2026-01-29 KSeF - 13 wątpliwości
- 2026-01-29 A ja się pochwalę
- 2026-01-29 Warszawa => Mid/Senior IT Recruiter <=
- 2026-01-29 Warszawa => Senior Java Developer <=
- 2026-01-29 Warszawa => IT Recruiter <=
- 2026-01-28 Degradacja
- 2026-01-28 Wysoki Sąd poinstruował czego unikać wyzywając Owsiaka "Równiejszego"
- 2026-01-28 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2026-01-28 Białystok => Preseles Inżynier (background baz danych) <=
- 2026-01-28 Wrocław => Konsultant wdrożeniowy ERP <=
- 2026-01-28 Łódź => Microsoft Engineer <=
- 2026-01-28 Białystok => Tester manualny <=
- 2026-01-27 Tradycja ciągania posłów po sądach za wystąpienia w Sejmie będzie kontynuowana [Lepper 2]
- 2026-01-27 Pierwszy raz sprzedano więcej samochodów zeeletryfikowanych niż ice
- 2026-01-27 Elektryczny Kałasznikow




Ceny mieszkań stabilne a zdolność kredytowa rośnie. O ile nie masz dzieci