Posted By: snake (keeping on the sunny side) on 'CZdatabases'
Title: Re: Strange things happen - ECPG na Postgresu 6.5.2
Date: Thu Jan 27 01:27:58 2000
Ahoj lidi, Pajasofte zvlast!
No ja si fakt nemyslim, ze by to bylo nejakym nepochopenim Ccka (ne ze bych ho
chapal, to rozhodne ne, ale hned vylozim, proci s to myslim):
1) preprocesor preklada priklad s promennou definovanou uvnitr i vne {}
naprosto stejne. Do stejne funkce
2) kompilator zkompiluje vec bez problemu, bez hlaseni chyb a bez hlaseni
warningu. Pritom rozdil je opravdu akorat v tom, ze jednou je promenna
definovana uvnitr a jednou vne {}. Na nazvu promenne je to nezavisle.
3) pokud jsem zkousel priklad, kterej by pomoci printf zapisoval do
ukazatele, kterej dostanu presne takovouhle definici - fungovalo to (naprosto
bez problemu a presne tak, jak jsem ocekaval)
4) chyba nastava (system pada) kvuli tomu, ze funkce, do ktere to ECPG
preklada - jednou ukazatel zmeni a podruhe ne. Zmeni ho ve chvili, kdy je
promenna definovana vne {} a nezmeni ho (tj. chova se korektne), kdyz je to
definovano uvnitr.
OK, pokud je to teda moje chyba a nepouzivam spravne syntaxi - jak zni tedy
ta spravna (abych nemusel vzdycky definovat "nahradni" promennou, ktera je mi
naprosto nanic - a pak vysledek kopirovat) definice?
snake
P.S. (uspesne) vyreseni tohohle problemu jsem ochoten sponzorovat jednou
cokoladou:-)
> A je to tu, presne to, o cem pise M. Virius ve Strasti a propasti
> jazyka
> C++. Bohuzel i ja CASTO delam stejnou chybu a programy nekdy bezi, nekdy ne.
>
> V C, ani v C++ NENI PRAVDA, ze POLE a UKAZATELE JEDNO JSOU!!!!
> NEJSOU!!!!!!!!!
>
> Ac se to clovek docte v mnoha knihach, neni to skutecne pravda a Virius
>
> na celkem srozumitelnych prikladech dokazuje (a spravne), ze je to skutecne
> nepochopeni pointeru u mnoha a mnoha lidi, vcetne radoby tech, kteri tvrdi,
> ze by C mohli dokonce vyucovat.
>
> Osobne se domnivam, ze presne zalezi na tom, co ECPG s tim ukazatelem,
> potazmo (2. pripad) &char [0], nakonec dela, program muze fungovat a
> nemusi...
>
> Dobry zpusob jak se podobny sracky odnaucit (a mne to nekdy pomuze) je
> nedelat string = char *, ale predstavovat si to jako pole int...
>
> ..s usmevem a laskou jde vsechno lip, nezapominejte na to v zivote..
>
>
> PaJaSoft