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