Re: Tajemná zákoutí jazyka C.
Miroslav Mraz
mrazik na volny.cz
Pátek Leden 8 16:58:45 CET 2016
Na tohle téma bylo napsáno spousta textu, který většinou vůbec nic
neřeší. Jediná rada je udržovat disciplínu, do pole zapisovat (číst) na
jediném místě, kde se zároveň kontrolují meze. I v ansi C můžete
uplatnit objektový přístup.
C++ je na tom lépe, pole může být chráněno (protected) což si samostatné
metody pro čtení a zápis (z vnějšku třídy) přímo vynutí. Pak můžete
použít řadu vymožeností od přetížení operátorů [], -> * atd, po použití
smart pointerů.
Ale co jsem tak koukal, tak všechny ty moderní vymoženosti, které mají
práci usnadnit a předejít chybám produkují jen nové chyby (při nevhodném
použití), které se hůře hledají.
Takže pokud se vám to rozrůstá do nepřehlednosti, udělejte nový
komplexní návrh a celé to přepište nejlépe do objektů. Ušetříte si
spoustu práce.
Co zde míníte pod pojmem Garbage collector není zcela jasné, může to být
uklízeč nepotřebných sekcí z gnu linkeru, který je dobré používat nebo
automatické uvolňování objektů z haldy, které ansi C ani C++ sice
nepoužívá, ale vše směřuje k tomu, že se tím budeme muset zabývat i na
těch jednočipech. Bohužel.
Mrazík
Dne 8.1.2016 v 14:30 Jiří Nesvačil napsal(a):
> Taky se temto zapisum vyhnu. Radeji to delam v ansi-c pres struct a
> vlozim prvy do struct s odkazy na ne.
>
> Jinak, kdyz jsme u te slozitosti, co delate se stringy ci obecne polem
> na takovem STM cpu v ansi-c ? Nekolik poli ci stringu se da uhlidat, ale
> s rustem.... .
> Ja jsem napriklad predelal vsechny metody na praci se stringy v ansi-c,
> aby pracovaly s max delkou a nekde to nepreteklo. Docela se mi libi i
> pascal notace tj. dostat zde delku na prvni pozici. Garbage collector
> jsem zatim nepouzil, i kdyz to k tomu vede.
>
> Jirka
>
>
Další informace o konferenci Hw-list