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