Ahoj, myslel jsem, že v C(++) už mě nic nepřekvapí, prošel jsem vším od složitých výpočetních algoritmů až po DirectD3.
Už přes půl roku programuji ve vývojovém prostředí Pelles C aplikaci pro Windows Mobile.
Programuji v ryzím C, nikoli v C++.
Má asi 10 000 řádků. Vše mám jednom souboru main.c
A teď to příjde:
1. problém nastal už dávno při volání rekurzivní funkce. Faktoriál rekurzí mi šel, jiný výpočet rekurzí ale z mně neznámého důvodu padal. Tehdy jsem to neřešil a napsal jsem to iterací...
2. Včera mi ale program totálně zešílel. Půl roku plně funkční aplikace přestala od základu fungovat. Dlouho jsem to ladil (bez debugeru), výsledek mě šokoval o to víc. Když jsem definoval (úplně zbytečnou, nepoužívanou) proměnnou
uvnitř jedné z funkcí double dbl[10]; bylo vše v pořádku.
když jsem definoval
double dbl[100];
program se najednou sesypal.
3. Toto jsem "vyřešil" tak, že jsem obrovské bloky zdrojáku dal z jedné velké do více menších funkcí a zas to fungovalo...
4. Dnes ale nastal error ještě větší, když mi neznámo kde program začal mazat obsah jedné proměnné (definované pro celý soubor main.c "static int g_iTestLevel;".
Po pěti hodinách jsem přišel na to, že když ji definuji jako static (takto mám všechny proměnné) program mi ji někde vynuluje. Když klíčové slovo static vynechám, program funguje jako švýcarské hodinky.
Co se to s tou aplikací proboha děje? Mám mobil s cca 256 MB RAM, ta aplikace žere maximálně 5MB (spíše 2MB), systém má volných cca 150MB. Tak s pamětí v mobilu by problém být neměl.
Máte někdo zkušenosti s podobným nesmyslným chováním aplikace na Windows Mobile?
-//- s podobnými nesmysly ve vývojovým prostředím Pelles C? Ono někdy se chová fakt zvláštně...
Je problém, že mám vše v jednom (a pěkně nepřehledném:D) souboru main.c?
Je nějaký důvod (z pohledu funkčnosti, ne přehlednosti) psát více krátkých funkcí, mít více malých xxx.c souborů než jeden velký main.c? Já už opravdu nevím, obávám se, že jednou tu aplikaci už přestanu zvládat.
Děkuji za nápady.