ceckovy kviz

Miroslav Mraz mrazik na volny.cz
Úterý Září 5 18:52:18 CEST 2023


Dojde vám to jednoduše tak, že už když píšete prototyp té funkce, musíte 
proměnné xx "udělit" nějaký typ. Což v makru není potřeba. Můžete zvolit 
usigned, proč ne. Ale už z následujícího řádku ((xx) < 0) je zřejmé, že 
je to blbost, unsigned je hodnotou celé číslo nezáporné, nemůže tedy 
nabýt záporné hodnoty z definice. Takže použijeme znaménkový typ int a 
ejhle ono to začne fungovat, takže ta různá automatická přetypování není 
třeba dál zkoumat. Život je krátký.
Co se týká posedlosti const, mohu jen říct, že když si jednou nabijete 
hubu, tak si to většinou pamatujete a zařídíte se podle toho. Pokud 
voláte funkci tak na 3. a větší úrovni vnoření, tak se lehce stane, že 
se pokusíte zapsat do read-only sekce. V C++ je to markantnější, pokud 
používáte odkazy. A pokud je tato sekce ve flash, skončí to blbě (ono to 
skončí blbě i v rozumném OS). A než tyhle blbé chyby následně hledat, 
vychází mi lépe neměnné proměnné (a odkazy na ně, tedy i ukazatele) 
označit jako const. On si to pak překladač ohlídá sám.

Mrazík

On 05. 09. 23 8:46, Jan Waclawek wrote:
> Je pravda, ze to makro je v tomto pripade nerozumne, a ta funkcia je
> rozumnejsie riesenie.
> 
> (Na druhej strane, ta posadnutost pravovernych C++-karov tym const...
> zhodou okolnosti v tomto konkretnom programe ten retazec konstruujem...)
> 
> Ale neviem, ako by mi to malo dojst. Aj som to skusil, gcc s -Wall a
> -Wpedantic nic nevyhlasil. A ani nema dovod. Ale ano, zakryje to problem.
> 


Další informace o konferenci Hw-list