const v C++

Daniel Prynych Daniel.Prynych na hornet.cz
Středa Září 19 13:04:21 CEST 2001


Dne po 17. září 2001 15:27 jste napsal(a):
> >> Mozna tohle taky nepude... Musi to pole byt constatni?
> >
> >No nemusi, pokud neni konstatni tak to funguje bezproblemu jak na RH6.1
> > tak na RH 7.1. Pokud je konstantni tak pouze na RH 6.1. Jde o to zde jsou
> > definovany pocatecne hodnoty barev. Ty se pak prekopiruji do pouzivane
> > tabulky barev. Pocatecni hodnoty jsou nemene, proto jsem je automaticky
> > udelal jako const.
>
> To už je druhý, co navrhuje, že problémy budou s const. Jenom že proti mě,
> když jsem to navrhl poprvé, někdo vyjel, tak jsem toho nechal. A teď se
> dozvím, že po odstranění const to neblbne. Ale aby to někdo raději
> zkusil...
>
> Jádro pudla je totiž v tom, že static const není v C++ to samé, co v C.
> Bylo by dobré si ten rozdíl ujasnit. A to tak, že pokud se kompilátor
> zblázní do optimalizace, tak se snaží nevytvářet paměť pro pole, tedy
> nevyhradit jí místo v paměti. Ale pokud možno tam raději dosazuje přímo
> hodnoty, aniž by pole vůbec v paměti existovalo!. A pokud to nezvládne, tu
> optimalizaci, tak máte přesně tu chybu, která nastává, tedy překladač
> zpanikaří a dělá všechno možné jenom ne, to co by měl. A nezvládnutí je u
> pole podstatně
> pravděpodobnější, než u jednoduché proměnné.

Ale pole s hodnotami typu integer zvladne, s hodnotami typu QColor ne, on ho 
sice vytvori ale do vsech prvku cele radky nacpe pouze prvni hodnotu.
Upozornuji ze optimalizace jsou vypnute.

Daniel Prynych



Další informace o konferenci Linux