Arduino a alokace mista pro promenne
Miroslav Mraz
mrazik na volny.cz
Čtvrtek Říjen 24 20:30:36 CEST 2019
To ale platí jen u čistého C, v C++ je to chyba a má to dobrý důvod. Už
se to tu asi probíralo, ale když předáte do funkce něco jako
void read (void * p, const int len)
ukazatel na konstantní objekt, funkce se se jej pokusí modifikovat a to
zhavaruje, nebo by zhavarovat mělo. Naopak např.
void write (const void * p, const int len)
přijme ukazatel na nekonstantní objekt v klidu, s tím problém být
nemůže, protože funkce z něj bude jen číst. Máte pravdu, že nad takovou
hierarchií se musí trochu přemýšlet, ale zase takové peklo to není.
Mrazík
Dne 24. 10. 19 v 19:55 Jan Waclawek napsal(a):
> Mimochodom, const (a volatile) su kvalifikatory, ktore svojim sposobom tiez
> rozdeluju adresny prestor, pretoze menia pravidla pre pristupovanie k
> nemu. A, skutocne, dosledne pouzivanie const vedie presne k tomu istemu
> peklu ako tie named adress spaces, najma pri pisani/volani funkcii, ktore
> maju fungovat pre smerniky na const aj ne-const; aj ked to peklo nie je
> uplne take fatalne ako u tych named address spaces, lebo sa obvykle jedna
> "len" o warning, nie error.
>
> wek
>
Další informace o konferenci Hw-list