PCPROG.1

20 Sep 1991 - 03 Dec 1992

Topics

  1. ms.dos (235)
  2. cccc (0)
  3. asembler (321)
  4. pascal (896)
  5. clipper (1059)
  6. zastita (239)
  7. basic (178)
  8. baze.podataka (116)
  9. novi.fajlovi (66)
  10. algoritmi (52)
  11. razno (707)
  12. van.teme (126)
  13. unknown (986)

Messages - unknown

unknown.211 nandi, -> #210, ppekovic
> A kako iz programa prepoznati dali je komandni interpreter > COMMAND.COM ili 4DOS.COM ??? Naravno, ne uz pomoć comspec promenljive, > već neki način koji će raspoznati u 100% slučajeva. uputstvo za 4dos (jeste, ono veliko), strana 334. nandi
unknown.212 mjova, -> #210, ppekovic
> A kako iz programa prepoznati dali je komandni interpreter pa valjda piše u uputstvu? ;) pa za sada jedna komanda radi i na 4dosu i na command to je ver, pretpostavljam da ima neki INT ili fn, koja vraća neki znak.
unknown.213 nkbog, -> #209, igor.mil
>> Danas sam, sasvim slucajno, otkrio jedan vrlo interesantan feature >> MSDOS-a. Radi se o obradi parametara prosledjenih preko komandne >> linije. .... >> Znaci, blanko znaci se ignorisu, osim ako se ne nalaze u okviru >> polja uokvirenog navodnicima. Valjda misliš na .BAT ili C (verovatno i drugi jezici)? MSDOS programu prosleđuje komandnu liniju u PSP-u (ofset 80h, prvi bajt je dužina linije), a sam program je obrađuje. Startup code će se postarati za to u C-u, a komandni interpreter za .BAT datoteke. DOS sam ne pravi razliku između argumenata. >> Jos jedna interesantna stvar: 4DOS vrsi kontrolu ispravnosti >> parametara komandne linije (!), i to ne pitajuci nas da li je zelimo >> ili ne (mozda se to i moze iskljuciti, ali ko ce da gleda ono ogromno >> uputstvo?). U 4DOS-u parametre možeš uokviravati i sa (") i sa ('). Kada se uokviruju sa (') ne vrši se obrada specijalnih znaka. Kada se uokviruju sa (") vrši se obrada specijalnih znakova (enviroment promenljive, parametri). I u jednom, i u drugom slučaju 4DOS se ponaša kao da su to argumenti za .BAT (.BTM) datoteke. Usled toga, 4DOS javlja "No closing quote" NB.
unknown.214 ppekovic,
Jel zna neko naziv i sintaksu funkcija za citanje sdrzaja direktorijuma na XENIX-u. Tj. nesto nalik na funkcije _dos_findfirst i _dos_findnext pod DOS-om. Paya
unknown.215 alexa, -> #214, ppekovic
> Jel zna neko naziv i sintaksu funkcija za citanje sdrzaja direktorijuma > na XENIX-u. #include <sys/ndir.h> OR #include <dirent.h> DIR *opendir(filename) char *filename; struct direct *readdir(dirp) DIR *dirp; long telldir(dirp) DIR *dirp; void seekdir(dirp, loc) DIR *dirp; long loc; void rewinddir(dirp) DIR *dirp; void closedir(dirp) DIR *dirp; Ovo treba da važi i za druge raznorazne UNIXe. Preporučujem dirent.h; pri linkovanju, valjda, treba koristiti -ldir (štos je u tome što sada na XENIX-u postoje dva kompleta ovih funkcija, pri čemu je DIR struktura različita; ovaj preporučeni je kao na UNIX-u).
unknown.216 alazic,
Hi, Da li neko slucajno se malo vise zabavljao sa kompajlerom TurboPascal --> C . Cini mi se da me je vkostic pitao za njega (tj trazio mi ga je , i ostavio sam mu ga u pc.soft/pascal , jos davno)... Dakle , da li je neko nesto ozbiljnije prevodio sa njim ?
unknown.217 mjova, -> #216, alazic
> . Cini mi se da me je vkostic pitao za njega (tj trazio mi > ga je , i ostavio sam mu ga u pc.soft/pascal , jos > davno)... Dakle , da li je neko nesto jel a koja je to poruka ili koje je ime tog programa? SY
unknown.218 sslavko, -> #216, alazic
Ja sam probao nesto malo, ali me bas nije odusevio pa sam ga batalio. To je onaj TP2TC zar ne? Najvise mi smeta sto radi sa TP 3.0 (ili 4.0 nisam siguran). Probao sam da prevedem neki sors, a on mi je javio gomilu stvari koje ne poznaje. Jedino je tacno preveo komentare. Ni ja ga nisam nesto puno koristio tako da su ovo samo prvi utisci. Pozdrav Slavko.
unknown.219 dzakic,
Jedan me je prijatelj zamolio da pitam sezamovce: Da li je moguće postići da neka MEMBER funkcija u klasi u C++ -u bude tipa interrupt, odnosno kako da ona preuzme neki interapt?
unknown.220 djelovic, -> #219, dzakic
> Da li je moguće postići da neka MEMBER funkcija u klasi u C++ > -u bude tipa interrupt, odnosno kako da ona preuzme neki > interapt? Slusaj, nisam bas stigao da probam, ali ne vidim zasto ne bi mogla da bude (mada je interrupt deklaracija zapravo prosirenje jezika i nema mnogo veze sa C++-om, vec sa konkretnom implementacijom). Interapt funkcije se razlikuju od "obicnih" samo po ulaznom i izlaznom kodu (recimo ne stoji RET nego IRET). Dakle: Tvoj drug neka stavi u deklaraciji klase da je funkcija interrupt, a to neka ne spominje u implementaciji. O nacinu pisanja interrupt funkcija nemam sada vremena da se raspisem, ali ako nema bas nikakvu literaturu neka, neka pogleda u help TC++-a, tamo bi to trebalo da bude lepo opisano.
unknown.221 cacxa,
Akcija : ---------------------------- #include <stream.h> main() { cout << "Hello World\n"; } --------------------------- Reakcija: Linker Error : Undefined symbol ostream::operator <<(const char far*) in module MYFIRST.CPP Subakcija: ????????????
unknown.222 djelovic, -> #221, cacxa
Stavi <iostream.h> umesto <stream.h>. I pisi originalnije programe :).
unknown.223 cacxa, -> #222, djelovic
> Stavi <iostream.h> umesto <stream.h>. I pisi originalnije > programe :). Tenk ju. ;) Znači TC++ ne podržava u potpunosti 'pravi' C++.Programče oridžinal iz C++ od Bjarnea S. ;))
unknown.224 djelovic, -> #223, cacxa
> Znači TC++ ne podržava u potpunosti 'pravi' C++.Programče oridžinal > iz C++ od Bjarnea S. ;)) TC++ podrzava AT&T-ovu C++ specifikaciju 2.0. BS-ova je (naravno) 1.0, pa otuda neslaganje. Inace, najnovija je 2.1, i nju (mislim) podrzava BC++.
unknown.225 nkbog, -> #224, djelovic
>> Inace, najnovija je 2.1, i nju (mislim) podrzava BC++. (Mislim) da je podrzava BC++ 3.0. BC++ 2.0 podrzava 2.0. NB.
unknown.227 dbojan,
Kako MSC 6.0 radi sa overlay-ima ? Da li MSC 6.0 100% podrzava ANSI C ? Kako generisati ASM listing C programa u MSC 6.0 ?
unknown.228 mjova,
postoji li neka fora da se vidi dužina neke posebne funkcije? lako imam pointer na nju, ali me zanima da li može nekako da se vidi koliko mesta zauzima ta fn u memoriji. mogu da od sledećeg fn pointera oduzmem neki, ali to nije kulturno rešenje. SY
unknown.229 radunovic,
Imam problema sa povezivanjem MSCa i MS fortrana. Hocu da mi c funkcija poziva fortran funkciju. To sve lepo funkcionise kada kao parametre prebacujem integer tipove. Medjutim, kad prebacim real tipove i vrsim neka izracunavanja, npr sin,sqr,.. prvo mi linker javi puno gresaka i kaze da stavim opciju /NOE(vec definisani simboli ili sl.), a kad to stavim prodje bez problema pa se posle zaglavi(program). Ako je neko imao iskustva sa ovim stvarima bio bih mu zahvalan na pomoci. Boki
unknown.230 nkbog,
Naišao sam na sledeću "stvar" u BC++ (za koju nisam našao dokumentovana, a ne deluje kao "feature" ;)): Ako izvršavate program korak po korak, statički podaci u klasi dobijaju pogrešne vrednosti. Watch ih prikazuje onakvim kakve bi trebale biti, ali se tako ne ponašaju u samom programu. Npr. class Klasa { static Klasa * p; ... public: Klasa(); ... }; Klasa * Klasa::p = NULL; Klasa::Klasa() { if( p == NULL ) p = ...; //*** ... } Ako se program izvršava red po red, red sa zvezdicama se nikad ne izvrši. Turbo Debbuger ovo izvrši kako treba, a i sam program se dobro ponaša. Dakle, ako imate statičke članove klase, debagujte klasu u TD, ne u BC++ NB.
unknown.231 dgrbic, -> #229, radunovic
:: prebacujem integer tipove. Medjutim, kad prebacim real tipove i :: vrsim neka izracunavanja, npr sin,sqr,.. prvo mi linker javi puno :: gresaka i kaze da Proveri da li oba kompajlera rade sa istim math libovima, ako jedan koristi alt math a drugi emulaciju 8087, onda nema sheme da proradi, zbog različitog formata float podataka. Onda treba da ponovo instaliraš jedan od dva kompajlera.
unknown.232 bojanp, -> #231, dgrbic
> Proveri da li oba kompajlera rade sa istim math libovima, ako jedan > koristi alt math a drugi emulaciju 8087, onda nema sheme da proradi, zbog > različitog formata float podataka. > Onda treba da ponovo instaliraš jedan od dva kompajlera. Ni slučajno nije potrebno ponovo instalirati ceo compiler. Dovoljno je kreirati odgovarajuću biblioteku.
unknown.233 dbojan,
Evo jedne MSC 6.0 biblioteke za MS MOUSE (iz knjige Microsoft Quick C Programmer's Toolbox, Microsoft Press.Valjda je jos ima u YU knjizi). Evo i jednog pitanja: Kako MSC pravi programe vece od 640KB tj. kako radi sa overlay-ima. MMMMH msmouse.arj
unknown.234 radunovic, -> #231, dgrbic
A cemu sluzi opcija u instalaciji MS Fortrana - kompatibilnost sa C-om. Meni je radilo i bez toga(sa int tipovima). Inace, mislim da je u onome greska. Probacu. Hvala na pomoci. Boki
unknown.235 bojt, -> #229, radunovic
>> Imam problema sa povezivanjem MSCa i MS fortrana. Hocu da mi >> c funkcija poziva fortran funkciju. To sve lepo funkcionise >> kada kao parametre prebacujem integer tipove. Medjutim, kad >> prebacim real tipove i vrsim neka izracunavanja, npr >> sin,sqr,.. prvo mi linker javi puno gresaka i kaze da stavim >> opciju /NOE(vec definisani simboli ili sl.), a kad to stavim >> prodje bez problema pa se posle zaglavi(program). Treba u C source-u da deklarišeš funkciju koju pozivaš kao fortransku (npr int _fortran forfun(...); ). Bilo koji tip bezdimenzionalnih podataka prebacuješ sa &, jer fortran prima samo adrese tih podataka u memoriji. >> A cemu sluzi opcija u instalaciji MS Fortrana - >> kompatibilnost sa C-om. Meni je radilo i bez toga(sa >> int tipovima). Ne znam šta se tačno dešava kada se pri instalaciji fortrana stavi kompatibilnost sa MS C-om, ali ja bi je stavio ;)). Mislim da se u tom slučaju uključuju u bibilioteku neke rutine koje su bitne za pozivanje C-a iz Fortrana. Inače, 80% biblioteka za MS kompjalere je skoro potpuno identično. Inače, jako je bitno da oba modula (i C i Fortran) kompajliraš sa istim opcijama, a naročito onim koje se odnose na koprocesor. C-u je default da koprocesora nema, a Fortranu da ima. Dakle, ako imaš koprocesor kompjaliraj C modul sa FPi87, a ako nemaš kompajliraj fortran modul sa FPi. Pored toga, biblioteke za C i Fortran moraaju da budu istovetne po pitanju koprocesora (7, E ili A). Pri linkovanju moraš da staviš opcije /NOE/NOD (da ti ne javlja greške kad naidje na višestruko definisane simbole i da *ne* koristi default biblioteke) i onda *obavezno* u listi biblioteka navedi prvo biblioteku za C pa tek onda biblioteku za fortran. Na primer, imaš koprocesor i kompajlirao si i C i Fortran sa opcijama -AL ili -AH (large ili huge memorijski model). Tada bi kompajliranje i linkovanje izgledalo: FL -c -AH testf.for CL -c -FPi87 -AH testc.c link/noe/nod testf+testc,test,,llibc7+llibfor7; Ako nemaš koproc. onda: FL -c -FPi -AH testf.for CL -c -AH testc.c link/noe/nod testf+testc,test,,llibce+llibfore; Ako i to ne ide probaj da pri likovanju staviš opciju /SEG:1024 (meni ona obično pomogne ;) ). Ponekad linker i pored opcije /NOE javi grešku višestrukog pojavljivanja simbola (obično neka tri), ali na to nemoj da se obazireš.
unknown.236 prvul, -> #234, radunovic
>> A cemu sluzi opcija u instalaciji MS Fortrana - >> kompatibilnost sa C-om. Meni je radilo i bez toga(sa int Da nije za calling convention (tj. način prenošenja parametara u potprograme) ? Prvul. ..co j orka ..co rep 9.1005 >>>>>> naravoučenije: u svakom PrC-ovcu čuči jedan Amigista. ;))>> Više ne čuči, obrisao se Amigom, od kada se na PC-u pojavljuju >>igre, za kojima Amigisti mogu samo da plaču.... hmm.. ja sam se nešto igrao na sva tri računara (PC, amiga, atari) i za igre bih još uvek odabrao amigu... (oh, da, nemoj da mi pricaš o tome kako pc MOčE da ima neku ultra-moćnu VGA kartu i Sound Blaster, jer sam baš takav i koristio...;) Prvul. P.S. Sve, sve, ali zar igre na amigi da napada... ;)
unknown.237 sslavko, -> #236, prvul
>> Da nije za calling convention (tj. nacin prenosenja >> parametara u potprograme) ? >> >> Prvul. >> ..co j orka >> ..co rep 9.1005 >>>>>>>> naravoucenije: u svakom PrC-ovcu cuci jedan >> Amigista. ;))>> Vise ne cuci, obrisao se Amigom, od >>>> kada se na PC-u pojavljuju igre, za kojima Amigisti >>>> mogu samo da placu.... :)))))))))))))) Kako si to uspeo??? Zar je SOR "zaboravio" da stavi jedan ctrl-Z?
unknown.238 dnikolic,
Kako da ispisujem tekuci datum i vreme? Ali tako, da ako neko koristi pro- gram nocu, u ponoc promeni datum! dn
unknown.239 nandi, -> #238, dnikolic
> Kako da ispisujem tekuci datum i vreme? Ali tako, da ako neko koristi pro- > gram nocu, u ponoc promeni datum! #include <stdio.h> #include <time.h> main() { time_t sad; char vreme[27]; time(&sad); /* upisuje tekuće vreme u struct sad */ sprintf(vreme, "%s", ctime(&sad)); printf("%s", vreme); } /* string vreme je oblika (na primer): Thu Jan 21 15:02:04 1992\n\0 */
unknown.240 ivans, -> #237, sslavko
* Kako si to uspeo??? Zar je SOR "zaboravio" da stavi jedan * ctrl-Z? Prvul, koliko mi je poznato (a poznato mi je prilicno dobro), ne koristi SOR. Pozdrav, Ivans.
unknown.241 prvul, -> #237, sslavko
>>>> ..co j orka >>>> ..co rep 9.1005 >> >>:)))))))))))))) >>Kako si to uspeo??? Zar je SOR "zaboravio" da stavi jedan ctrl-Z? Nije, nego sam ja uzeo da malko izmenim taj exec, pa sam greskom obrisao red sa ctrl-z... Tek kada je exec prosao, videh sta sam uradio, pa sam ipak resio da poruku ostavim... računao sam da će ovde svima biti jasno dokle treba da čitaju... Prvul. P.S. Evo, kajem se... neću više... dobro, možda... ;)
unknown.242 cacxa,
Jedno pitanje u vezi s FLEX-om - kako ovo da se pokrene? Dobijem lexyy.c i probam da ga kompajliram iz TC-a a ono razni unreachable code in function main, linker error, s0.asm, ... Dakle, jel može neko da opiše celokupnu proceduru oko recimo ovog : [a-z0-9] => printf("Slovo ili broj.\n")
unknown.243 alexa, -> #242, cacxa
> Dobijem lexyy.c > i probam da ga kompajliram iz TC-a a ono razni unreachable > code in function main, linker error, s0.asm, Unreachable code smatraj normalnom pojavom (u pitanju je generisani C program koji nije preterano optimizovan). Za ostalo - ne znam, ima ljudi koji su radili pod DOS-om, neka oni kažu :) Postoji i biblioteka koju treba da upotrebiš pri linkovanju (na UNIX-u se zove libfl.a). U njoj se nalazi samo (trivijalni) modul libmain. Prema tome, možeš jednostavno da linkuješ lexyy.obj i libmain.obj. U sledećoj poruci (bez YUSCII-ja) ide procedura na UNIX-u.
unknown.244 alexa, -> #243, alexa
... dakle, da nastavim. Izvorni program (za flex) trebada izgleda ovako: %% [a-z0-9] printf("Slovo ili broj\n"); Komanduje{ flex datoteka.l i dobije{ lexyy.obj. Linkuje{ lexyy.obj i libmain.obj i treba da dobije{ svoj program koji cita stdin i na stdout izbacuje svoja zapazanja :) Izvinjavam se sto sam po navici koristio YUSCII i u ovoj poruci - nadam se da cete me razumeti. P.S. Ovo nije bas procedura na UNIX-u - tamo se umesto sufiksa .obj koristi .o, a umesto naziva lexyy.c koristi se lex.yy.c. Inace je sve prakticno isto. Izgleda da nam mnogo treba neka alatka koja ume da cita MAN datoteke (tj. da ih raspakuje).
unknown.245 djelovic, -> #242, cacxa
Procitaj igor.mil-ov tekst u Decembarskim racunarima. Inace, u primeru sto ti ga alexa dade, tebi uz onu *.l datoteku treba datoteka koja sadrzi funkciju main () koja poziva lexxy (). Ako nekoga zanima uputstvo za YACC (Bison), ja sam dekompajlirao onaj TEX fajl i napravio datoteku koja moze lepo da se cita editorom (bez TeX-ovih čkvacica). Kome treba neka vika.
unknown.246 igor.mil, -> #242, cacxa
> Dakle, jel moze neko da opise celokupnu proceduru oko recimo ovog : > > [a-z0-9] => printf("Slovo ili broj.\n") Napravi ovakav fajl: --- LEX.L --- %% [a-z0-9] printf("Slovo ili broj.\n"); %% main() { yylex(); /* poziv skanera koji se zove 'yylex', ako se drugacije ne naredi */ } ------------- onda uradi: flex lex.l tcc lexyy.c (ne zaboravimo na potrebne definicije za staze do standardnih headera i biblioteka koje stavljamo u TURBOC.CFG!!!) a moze i: tc lexyy.c pa se onda sve radi iz IDE. Objasnjenje: u delu iza drugog %% u lex programu, nalazi se tekst koji se DOSLOVNO KOPIRA U GENERISANI C KOD. Znaci, izostavis li definiciju funkcije 'main', dobices "linker error" prilikom pokusaja da linkujes "lexyy.c", posto je takav "lexyy.c" samo C kod POTPROGRAMA (funkcije) 'yylex'. Ako hoces da ti 'main' funkcija bude posebnom fajlu, onda napravi sledece: --- LEX.L --- %% [a-z0-9] printf("Slovo ili broj.\n"); ------------- --- MAIN.C -- main() { yylex(); } ------------- Onda se radi: flex lex.l tcc main.c lexyy.c a za integrisanu okolinu mora da se napravi .PRJ fajl koji ce sadrzati: main lexyy Inace, ime izlaznog fajla koji generise flex ne mora bude bas lexyy.c: flex -t lex.l > lex.c I zvace se "lex.c". Switch '-t' komandije flexu da svoj rezultat salje na standardni izlaz.
unknown.247 igor.mil, -> #244, alexa
> Komanduješ > flex datoteka.l > i dobiješ lexyy.obj. > Linkuješ lexyy.obj i libmain.obj i treba da dobiješ svoj program Ja nisam "unixman", ali mi izgleda dosta čudno da se kao rezultat rada lex kompajlera dobija objektni modul. Zar ne bi trebalo da se dobije C source?
unknown.248 igor.mil, -> #243, alexa
> > Dobijem lexyy.c > > i probam da ga kompajliram iz TC-a a ono razni unreachable > > code in function main, linker error, s0.asm, > > Unreachable code smatraj normalnom pojavom (u pitanju je generisani > C program koji nije preterano optimizovan). Za ostalo - ne znam, Da ne bude zabune, nije reč o tome da program nije optimizovan da radi što je moguće breže ili sa manjim utroškom memorije, nego da u prosto kodu ima nekog teksta koji nije neophodan. Ovo ovo je posledica toga što se kod generiše tako što se u kostur skanera (fajl "flex.ske") ubaci "meso" koje predstavlja akcije koje definišemo lex programom. Na primer, u svakoj od grana "switch" strukture se po difoltu nalazi "break". Ako se iz te grane, recimo, izlazi sa "return", onda je "break" višak, i dovodi do upozorenja "unreachable code". Takođe, ovu poruku izaziva i dosta intenzivno korišćenje "goto" naredbe u generisanom kodu, koje "zbunjuje" kompajler. A "goto" se koristi baš zato da bi se ubrzalo izvršavanje (na primer, za izbegavanje rekurzije).
unknown.249 ljupco,
Pokusao sam 1: int i,j; 2: void main(void) 3: { 4: for (i=10, while(--i); i<100; i++) 5: ; 6: for (i=0, while(++i<10); i<100; i++) 7: ; 8: for (i=0, while(i<10) i++; i<100; i++) 9: ; 10: for (i=0; i<100; j=i+10, while (i<j) i++) 11: ; 12: } i dobio Borland C++ Version 2.0 Copyright (c) 1991 Borland International pr.cpp: Error pr.cpp 6: Variable name expected in function main() Error pr.cpp 8: Expression syntax in function main() Error pr.cpp 10: Expression syntax in function main() *** 3 errors in Compile *** Prva petlja (linija 4) prolazi, ali ne radi kako treba. Meni treba recimo nesto kao for(G=-1, while (used[++G]); G<=9; while (used[G] && G<=9) G++) Bitno mi je to sto se ono "while (used[G] && G<=9) G++" izvrsava kad forsiram sa continue. Help!
unknown.250 duduk, -> #249, ljupco
> Error pr.cpp 6: Variable name expected in function main() Neverovatno, kako si samo ovo dobio?!?!? Treba da se pojavi, kao prvo i glavno, expression syntax ...., a za njom i jos jedna greska (nije vazno koja) za svaku liniju. expression syntax ... se javlja iz istog razloga kao i kod, na primer i = while(--j)j++; Dakle, ne moze while u izraz( iliti expression ). > for(G=-1, while (used[++G]); G<=9; while (used[G] && G<=9) G++) Ako sam u pravu, ista pojava i ovde.
unknown.251 alexa, -> #247, igor.mil
> Ja nisam "unixman", ali mi izgleda dosta čudno da se kao rezultat > rada lex kompajlera dobija objektni modul. Glb, moja greška (posledica vremena kad sam kucao poruku). Naravno, dobije se C modul, a onda se jednim trivijalnim potezom dobija i objektni modul :) Inače, vidim da svi ubacujete main() u flex modul; u originalu nije praksa da se tako radi - po analogiji sa lex-om, linkuje se sa bibliotekom libfl.a, koja sadrži samo libmain.o . A modul libmain sadrži upravo onakav trivijalni main kakav i vi stavljate u flex module.
unknown.252 ljupco, -> #250, duduk
Probao sam ovo #include <stdio.h> int i; void init(void) { i=3; while(--i); } void main(void) { for (i=3, while(--i); i<5; i++) printf("%d\n",i); puts("******"); for (init(); i<5; i++) printf("%d\n",i); } i dobijam 2 3 4 ****** 0 1 2 3 4 Na zalost, NE MOZE ovo void main(void) { void init(void) { nesto... } int cond(void) { return(nesto...) } void loop(void) { nesto... } for(init(); cond(); loop()) { telo petlje... } } Takodje, ako init(), cond() i loop() definisem kao inline, dobijem Warning xx.xx xx: Functions containing while are not expanded inline
unknown.253 mjova, -> #252, ljupco
> for (i=3, while(--i); i<5; i++) > printf("%d\n",i); nemoj pogrešno da me razumeš, ali meni nije jasno čemu ovo? kako mi se čini, u C-u se for komande ovako definiše: for ([izraz_1]; [izraz_2]; [izraz_3]) { funkcija() } *PRE* prvog prolaza, izračunava se 'izraz_1'. 'funkcija()' se izvršava dokle god je 'izraz_2' jednak nuli. 'izraz_3' se izračunava posle svakog prolaza. dakle, po nekoj mojoj logici, mislim da će pre ulaska u for petlju, ako ga kompajler sažvaće, ono 'i=3, while(--i)' odvrteti i ništa osim gubljenja vremena nema. takođe, krenuće od 'i=0'. nisam probao, pričam napamet. reci koji ti je cilj? > Na zalost, NE MOZE ovo > for(init(); cond(); loop()) naravno da ne može, pogledaj help: *> for ( [<expr1>] ; [<expr2>] ; [<expr3>] ) *> <statement> dakle, samo izrazi, komande nikako. SY
unknown.254 ljupco, -> #253, mjova
> dakle, po nekoj mojoj logici, mislim da ce pre ulaska u for petlju, > ako ga kompajler sazvace, ono 'i=3, while(--i)' odvrteti i nista osim > gubljenja vremena nema. takode, krenuce od 'i=0'. nisam probao, pricam > napamet. reci koji ti je cilj? Trebalo bi da prijavi gresku (duduk je ranije rekao). Medjutim, bcc ga kompajlira bez greske, a zatim radi kao da je 'i=3, --i', dok tc prijavljuje gresku (probao danas). > > Na zalost, NE MOZE ovo > > for(init(); cond(); loop()) > > naravno da ne moze, pogledaj help: > > *> for ( [<expr1>] ; [<expr2>] ; [<expr3>] ) > *> <statement> > > dakle, samo izrazi, komande nikako. Ma poziv f-je nije komanda, i radi recimo #include <stdio.h> int i; void init(void) { i=3; while(--i); } int cond(void) { return(i<5); } void loop(void) { i++; } void main(void) { for (init(); cond(); loop()) printf("%d\n",i); } (stampa 0 1 2 3 4) ali ovaj primer nema prakticne primene jer 'i' mora biti definisano izvan main da bi ga videle init, cond i loop f-je. Moje *ne moze* se odnosilo na to da ne mogu neposredno iznad for petlje da definisem init, cond i loop. > nemoj pogresno da me razumes, ali meni nije jasno cemu ovo? Zatrebalo mi je nesto kao for(G=-1, while (used[++G]); G<=9; while (used[G] && G<=9) G++) t.j. na pocetku je petlje 'G' broj izmedju 0 i 9 ali takav da je u tabeli used used[G]==0, a zatim u svakom je koraku G sledeci za koji je used[G]==0 (i jos <= 9). Petju for shvatam kao for(inicijalizacija; uslov; sledeci_korak) i otuda sve ovo.
unknown.255 mjova, -> #254, ljupco
>> dakle, samo izrazi, komande nikako. > Ma poziv f-je nije komanda, i radi recimo naravno, verovatno sam se prebacio kod onog while() u for petlji, pa sam generalizovao init() kao while(), ko zna... ;) SY
unknown.256 sslavko,
Ima li ko iskustva sa Dflat-om? Interesuje me sve u vezi ove biblioteke od instalacije do koriscenja. Pozdrav Slavko.
unknown.257 dnikolic, -> #256, sslavko
>> Ima li ko iskustva sa Dflat-om? Interesuje me sve u vezi ove >> biblioteke od instalacije do koriscenja. Ma ono je toliko komplikovano, da mi je bilo lakse da napisem stvari za koris- nicki interfejs sam, nego da lupam glavu kako stvar radi. dn
unknown.258 gristic, -> #256, sslavko
Što se dflat-a tiče važi ona narodna: spolja gladac, unutra jadac. Takav kakav jeste je prilično neupotrebljiv jer "pojede" oko 160K memorije iz čistog mira (dflat 5 cca 140K). Ali, ako želiš da skidaš cake i još po nešto naučiš onda je odličan.
unknown.259 sslavko, -> #257, dnikolic
>> Ma ono je toliko komplikovano, da mi je bilo lakse da >> napisem stvari za koris- nicki interfejs sam, nego da >> lupam glavu kako stvar radi. To sam i ja mislio ali reko' sto da otkrivam toplu vodu. Izgleda da cu ipak morati. Uzgred, probao sam one A.Radovanoviceve "Prozore na C-u" pa mi i tu nisu jasne neke stvari. Prilikom svakog pozivanja onih funkcija na ekranu mi se ispise nesto poput "Null pointer assignment." Zna li neko nesto o ovome. Naglasavam da nisam imao vremena da dublje analiziram tu njegovu biblioteku pa me interesuju iskustva u vezi istog. Pozdrav Slavko.
unknown.260 dnikolic, -> #259, sslavko
>> Uzgred, probao sam one A.Radovanoviceve "Prozore na C-u" pa mi i tu >> nisu jasne neke stvari. Prilikom svakog pozivanja onih funkcija na >> ekranu mi se ispise nesto poput "Null pointer assignment." Zna li neko >> nesto o ovome. Naglasavam da nisam imao vremena da dublje analiziram >> tu njegovu biblioteku pa me interesuju iskustva u vezi istog. Da nisi nesto pogresio sa pointerom na bafer za cuvanje sadrzaja ekrana? Inace, taj clanak je veoma dobar, moze dosta da se nauci, i ja sam ga koris- tio kao osnovu za rad u mojim programima. Ali voleo bih da postojece funkcije jos vise usavrsim. Nekad sam imao ST i svideo mi se rad pomocu RCS-a. Cilj je da kompletan rad sa menijima ( horizontalnim i vertikanim ) ide preko jedne jedine funkcije, koja vraca broj menija. Dalje sve ide preko switch/case. Ako zelis mogu ti poslati moje rutinice, ( koje rade :) pa pogledaj. dn dn
unknown.261 sslavko, -> #260, dnikolic
>> .................. Ako zelis mogu ti poslati moje >> rutinice, ( koje rade :) pa pogledaj. Bio bih ti veoma zahvalan ako to uradis. Ne bi bilo lose da se pokrene rasprava o podeli programa na module. Svako ima neki svoj kriterijum po kome odvaja funkcije u posebne module. U najgorem slucaju se dobije gomila manjih modula i par veeeliikiiiih. Da li neko uopste ima obicaj da prvo smisli program na papiru u obliku nekog blok-dijagrama pa tek onda da ga kodira ili svi radimo onako, iz glave. Pozdrav Slavko.
unknown.262 dusanp,
Da li se neko bavio "pametnim programima" u C-u. Treba mi program koji se ponaša što inteligentije. Nešto kao Eliza /ako se neko još seća tog programa/. To me zanima zato što sam se neko vreme bavio takvim programom i nisam postigao Bog zna šta. Stvar je u tome što je rešenje ovog problema više vezano sa nekim drugim stvarima nego sa C-om. Dušan Popović -> dusanp P.S. Lep efekat se dobija ako se, recimo neki takav program poveže sa SoundBlasterom.
unknown.263 dr.obradovic,
Cini mi se da sam nasao jedan vrlo cudan bag Turbo C++ compilera... Kompajlirao sam neki program u kome ima i asm naredbi i naravno dobio sam .ASM verziju celog programa. Desilo se to da mi Turbo Asembler prijavi sledecu gresku: Illegal use of segment register " les ds,dword ... Verovatno je u pravu - i MASM prijavljuje istu gresku - ali da li je moguce da je Turbo C prilikom pravljenja .ASM verzije ubacio instrukciju koja ne postoji. Da napomenem da ovu instrukciju nisam ja stavio pomocu "asm" vec ju je generisao sam Turbo C. Kako ovo da resim ??? Verovatno cu zameniti ovu instrukciju u samom .ASM programu sa vise instrukcija koje ce raditi isto, ali mi se to ipak ne svidja. Jos nesto - kod svih instrukcija "les" osim kod ove kompajler je koristio registar bx. Ako neko ima slicnih iskustava... Dragoljub B. Obradovic
unknown.264 mjova, -> #263, dr.obradovic
> Kako ovo da resim ??? Verovatno cu zameniti ovu > instrukciju u samom .ASM programu sa vise instrukcija koje > ce raditi isto, ali mi se to ipak ne svidja. e, slab sam sa asemblerom, ali da možda nije neka od optimizacija? ili nešto tako? imao sam nekoliko puta potrebe za asm naredbama, ali nisam imao nikakvih problema SY
unknown.265 dbojan,
Kako snimiti screen u datoteku (i vratiti ga nazad) sa MSC6 ???
unknown.266 bearboy, -> #262, dusanp
-+={ P.S. Lep efekat se dobija ako se, recimo neki takav -+={ program poveze sa SoundBlasterom. SBTalker with Dr. Saibatso, npr ? To se dobija uz Sound Blaster.
unknown.267 djelovic, -> #263, dr.obradovic
> Verovatno je u pravu - i MASM prijavljuje istu gresku - ali da > da je Turbo C prilikom pravljenja .ASM verzije ubacio instrukci > postoji. Probaj da dobijeni .ASM listing prevedeš sa TASM-om 2.0 ili većim. Moguće je da TC++ daje kod koji je TASM kompatibilan (TASM ima poseban režim pisanja), pa zato MASM neće da prevede. A sam TC++ neće da ga prevede jer je u njega ugrađen TASM 1.0 koji je pun bubica i često pravi probleme.
unknown.268 djelovic, -> #265, dbojan
> Kako snimiti screen u datoteku (i vratiti ga nazad) sa MSC6 ??? Imaš dosta na tu temu u PC.SOFT. Potraži tamo.
unknown.269 nkbog, -> #263, dr.obradovic
> sledecu gresku: > Illegal use of segment register " > les ds,dword ... Ta instrukcija jednostavno ne postoji. Inače, daj malo više podataka: kako izgleda program, koja verzija kompajlera, kako se zovu promenljive itd. NB.
unknown.270 pjankovic,
Da li bi neko zelio da ovdje iznese svoja iskustva u radu sa BORLAND C++ & APPLICATIONS FRAMEWORK? Koliko sam razumio iz oglasa, tu su ukljuceni i objekti za programiranje za WINDOWS-e. Kakva su uopste iskustva u pravljenju WINDOWS programa (ne moraju biti u C-u)? Pratim po malo americke casopise i vidim da se skoro svi veliki komercijalni programi prepravljaju za WINDOWS-e, pa mi se cini da cemo i mi uskoro morati da se uhvatimo u kostac sa WINDOWS programiranjem. Pedja
unknown.271 bojanp, -> #263, dr.obradovic
> Cini mi se da sam nasao jedan vrlo cudan bag Turbo C++ compilera... > Kompajlirao sam neki program u kome ima i asm naredbi i naravno dobio sam > .ASM verziju celog programa. Desilo se to da mi Turbo Asembler prijavi > sledecu gresku: > Illegal use of segment register " > les ds,dword ... > Verovatno je u pravu - i MASM prijavljuje istu gresku - ali da li je > moguce da je Turbo C prilikom pravljenja .ASM verzije ubacio instrukciju > koja ne postoji. Instrukcija les ds,dword ... je sigurno nepostojeća! Moguće je da Turbo C++ daje loš ispis jer me dotična instrukcija asocira na sledeću: les dx,dword ... koja je potpuno legalna. Ako program koji si napisao radi onda je verovatno problem u generisanju asemblerskog listinga. Pozdrav, Bojan
unknown.273 djelovic,
Noviji kompajleri (pri tome mislim primarno na MS i Borland) bi trebali da izbacuju neiskorišćene funkcije i promenjljive iz programa. Da li to radi kompajler na delu programa koji vi napišete, ili to radi linker pa on izbacuje sve što je nepotrebno i iz biblioteka? Ovo me zanima prvenstveno za Borland C++, ali je i odgovor za MSC dobrodošao (valjda je princip isti). ZZ, eto ti pasusa u Školici C-a.
unknown.274 nesavic,
Pitanje: da li sa MSC 6 mogu da se pisu programi za WIN?
unknown.275 ivans,
Interesuje me kolike su razlike izmedu Dflat3 i Dflat9. Sta mislite? Pozdrav, Ivans.
unknown.276 djelovic, -> #274, nesavic
Ne mozes bez Win SDK-a. Ako već nameravaš da pišeš Win programe, bolje pređi na BC++. Lakše je.
unknown.277 dejanr, -> #274, nesavic
>> Pitanje: da li sa MSC 6 mogu da se pisu programi za WIN? Da, mnogi ih pišu baš tako. Ali sam MSC nije dovoljan, potreban ti je Microsoft Windows SDK (Software Development Kit).
unknown.278 alexa, -> #273, djelovic
> Noviji kompajleri (pri tome mislim primarno na MS i Borland) > bi trebali da izbacuju neiskorišćene funkcije i promenjljive iz > programa. Da li to radi kompajler na delu programa koji vi napišete, > ili to radi linker pa on izbacuje sve što je nepotrebno i iz biblioteka? Razmisli kako bi to moglo da radi: funkcije i promenljive koje se ne koriste u modulu u kojem su definisane kompajler sme da "ukloni" samo u slučaju da su nevidljive iz drugih modula, npr. automatske promenljive ili eksplicitno lokalne statičke promenljive (one koje imaju reč "static" u deklaraciji) ili "static" funkcije. Ostalo bi imao pravo da ukloni samo linker, jer tek on zna da se na te funkcije/promenljive ne poziva neki drugi modul. On to (u MS-DOS-u) ne radi, jer su u standardnom objektnom modulu (Intel/Microsoft OMF) pojmovi "promenljiva" i "funkcija" izgubljeni. U njemu postoje podaci i simboli - podaci ne pripadaju ni jednom simbolu, pa se ne mogu ukloniti. Što se tiče izbacivanja nepotrebnih stvari iz biblioteka, to se, na izvestan način, radi: u stvari, ubacuju se samo oni moduli za koje linker zaključi da su potrebni (ali to nema veze sa novijim kompajlerima). Što se tiče Borlanda, ništa me od njih ne može iznenaditi :)
unknown.279 dusanp, -> #266, bearboy
==> SBTalker with Dr. Saibatso, npr ? To se dobija uz Sound ==> Blaster. Naravno, ali šta mi vredi kada meni treba source u C-u. Možda bi trebalo pitati Dejana - ako me pamćenje služi on je nekad (davno,davno...) pokrenuo konkurs za najpametniji program.
unknown.280 nesavic,
Imam malih problema sa povezivanjem Pascala i funkcija pisanih u Cu... Evo problema, ja lepo napisem sve funkcije koje mi trebaju u Cu napravim OBJ fajl i sve lepo radi, prebacim obj fajl u dir za Pascalove objekte, i startujem program iz koga pozivam š$L PITER.OBJć medjutim pri kompajliranju on mi rece da je bilo koja od tih funkcija neprepoznatljiva tj. nije definisana u OBJ fajlu kao PUBLIC... E sad ja uzmem TCC i izlistam ASM verziju... i sta vidim one definisane na kraju kao PUBLIC sve funkcije... U cemu je sad fora??? zahvalan, NeSa!
unknown.281 dzakic, -> #280, nesavic
>> Imam malih problema sa povezivanjem Pascala i funkcija pisanih u >> Cu... Ne znam za C i paskal ali znam za asembler i paskal. Paskal zahteva (osim da svi objetki budu public) i deklaraciju "code segment public". Možda ti to pomogne...
unknown.282 dgrbic, -> #280, nesavic
:: program iz koga pozivam š$L PITER.OBJć medjutim pri kompajliranju :: on mi rece da je bilo koja od tih funkcija neprepoznatljiva tj. :: nije definisana u OBJ fajlu kao PUBLIC... Nisam se time bavio, pa samo nagađam: Probaj da razdvojiš C funkcije, tako da svaka ima svoj .obj, znam da neki kompajleri imaju tendenciju da podrazumevaju da je ime funkcije u .obj fajlu isto kao i ime .obj fajla, pa ako to ne radi, da mislimo dalje.
unknown.283 duduk, -> #280, nesavic
> Imam malih problema sa povezivanjem Pascala i funkcija pisanih u Cu... Probleme ti pravi vise stvari, recimo underscore ispred imena, imena segmenata, konvencije za pozivanje.... U svakom slucaju, imas negde, ili u C-u ili u Pas-u, CTOPAS.CFG. Kad prevodis C funkciju, prevedi je s ovom konfiguracijom i sve ce biti O.K. Ako ga nemas, ili si ga zagubio, evo ga: -wrvl -p <- Pascal calling konvencija -k- <- iskljuci standard stack frame -r- <- iskljuci koriscenje registarskih varijabli -u- <- da iskljuci 'Underscores on externs' -zCCODE <- odavde pa do kraja imena koja su razlicita za C i Pas -zP -zA -zRCONST -zS -zT -zDDATA -zG -zB P.S. Jedino na sta jos treba da pazis je prenos stringova.
unknown.284 ljupco,
Imam c program i malo inline asemblera u njemu. Kada kompjaliram sa bcc (bcc -B -mt -lt program), linker javlja fatal error "Cannot generate COM file: segment relocatable items present". U popisu gresaka za linker za ovo kaze "program contains segment relative fixups". Kako da pronadjem u cemu je problem? U map fajlu koji generise tlink (sa /s) u popisu simbola na kraju jedino ispred __setargv__ stoji Abs. U uputstvu je dato objasnjenje kad ispred stoji Idle, ali Abs ne pominje - ima li to uopste veze sa mojim problemom? Treba mi bas .com fajl, help!
unknown.285 nesavic, -> #283, duduk
Hvala, probacu pa cu da javim...
unknown.286 duduk, -> #284, ljupco
> Imam c program i malo inline asemblera u njemu. Kada kompjaliram sa bcc > (bcc -B -mt -lt program), linker javlja fatal error "Cannot generate COM > file: segment relocatable items present". U popisu gresaka za linker za > ovo kaze "program contains segment relative fixups". - This TLINK error is displayed when using any floating point - routines, far calls or C++ stream functions in a program compiled - in the tiny model and linked using the -t linker option to create - a .COM file. Izvor - PC.PROG:11.50
unknown.287 ljupco, -> #286, duduk
> - This TLINK error is displayed when using any floating point > - routines, far calls or C++ stream functions in a program compiled ^^^^^^^^^ > - in the tiny model and linked using the -t linker option to create > - a .COM file. Hvala, uzeo sam taj fajl jutros, i stvarno, problem je bio u far pozivu interapt funkcije. Konkretno, program preuzima keyborad interapt 9, i na pocetku newkey procedure poziva se oldkey sa (*oldkey)() dok je prethodno deklarisano: void (interrupt far *oldkey)(void);
unknown.288 ljupco, -> #286, duduk
> - This TLINK error is displayed when using any floating point > - routines, far calls or C++ stream functions in a program compiled ^^^^^^^^^ > - in the tiny model and linked using the -t linker option to create > - a .COM file. Hvala, uzeo sam taj fajl jutros, i stvarno, problem je bio u far pozivu interapt funkcije. Konkretno, program preuzima keyborad interapt 9, i na pocetku newkey procedure poziva se oldkey sa (*oldkey)() dok je prethodno deklarisano: void (interrupt far *oldkey)(void);
unknown.289 mjova,
nije C, al' ajde ;) uz ovu poruku okačeni su makroi koji služe za komunikaciju QEDIT-a sa borlandovim bcc (bccx) C prevodiocem. gotivni su al' ne zato što smo ih napisali jedan moj drugar i ja, već zato što su stvarno dobri ;) moguće je da se prebace za rad sa drugim prevodiocem, kome treba nek menja slobodno. e, da, kako sam imao mali problem u vezi uključivanja ovih makroa u qconfig.dat, napravio sam tako da se makroi učitaju pri prvom pritisku nekog od tih tastera. problem je u tome što je 'qconfig.exe' jedan vrlo stupidan program koji dozovljava da makro bude u samo jednom redu :(. e, kako su ovi makroi malo duži, moralo je ovako. dakle, ovde ima borlandc.mac, .qm i qconfig.dat (samo deo). SY bcc-mac.arj
unknown.290 zsavic,
Gde može da se nabavi C++ 2.0 predprocesor za MSC 6.0 ? SAVA
unknown.291 iboris,
Da li neko zna gde mogu da nabavim grafičke biblioteke za C , ZINC C-SCAPE Zahvaljujem unapred na svakoj informaciji ! Pozdrav, Boris
unknown.292 dusanp,
Da li se neko malo duže bavio message-driven programiranjem ? Skinuo sam DFLAT9 i zgrozio se. Sve to ne bi bilo tako strašno da se i WIN ne programira tako. Možda sam ja staromodan, ali mi se /bar u slučaju DFLATa/ sve to čini nepotrebnim komplikovanjem. Da li neko ima literaturu koja ide uz MS SDK ? Samo me zanima da li se isplati nabavka - da li u njoj ima dovljno informacija za WIN programi- ranje ?
unknown.293 dejanr, -> #292, dusanp
>> Da li neko ima literaturu koja ide uz MS SDK ? >> Samo me zanima da li se isplati nabavka - da li >> u njoj ima dovljno informacija za WIN programi- >> ranje ? Ima ih i više nego mnogo, na hiljade strana :(
unknown.294 vbole, -> #289, mjova
> e, da, kako sam imao mali problem u vezi ukljucivanja ovih makroa u > qconfig.dat, napravio sam tako da se makroi ucitaju pri prvom pritisku > nekog od tih tastera. problem je u tome sto je 'qconfig.exe' jedan > vrlo stupidan program koji dozovljava da makro bude u samo jednom redu > :(. Nije lose, nije lose... A za ukljucivanje makroa - sto ne probas sa malim batch-om, recimo qc.bat q %1 /Lborlandc.mac startujes sa: qc ime.ext - i makroi su tu za rad u C-u, a inace vaze stari iz qconfig. P.S. Ja nisam ni znao za ono SetScreen i SetSound, ali brate kod mene nema neke razlike u brzini.Jel' to ubrzava samo u 2 prozora ili kako ? bye... vbole
unknown.295 bulaja, -> #292, dusanp
│Da li neko ima literaturu koja ide uz MS SDK ? Samo me zanima da │li se isplati nabavka - da li u njoj ima dovljno informacija za │WIN programiranje? └─── Literatura koja ide uz MS SDK se prodaje i posebno (izdavac Microsfot Press) i sastoji se od tri knjige - Guide To Programming (sluzi onome sto i ime kaze ;), Programmers Refference (knjizurina, oko 1200 strana, refference svih Win funkcija) i Tools (meni ne izgleda nesto preterano potrebna ;). Ali obavezno pogledaj pre svega ovoga "Programming Windows (2nd ed.)" Charles Petzold-a (nesto deblje od 1000 strana, ima svega), jer svi kazu da je najbolja knjiga. Kod "Sahinpasica" u cenovniku ima Petzold za 105 DEM (bezobrazno skupo, posto inace kosta 30 USD).
unknown.296 mjova, -> #294, vbole
> P.S. Ja nisam ni znao za ono SetScreen i SetSound, ali > brate kod mene nema neke razlike u brzini.Jel' to ubrzava > samo u 2 prozora ili kako ? pa to što se isključi beep-er, ili ekran, samo služi kad se radi nešto po editoru. dakle, ako nađe na neku muku neće da kuka ;). i ako koristiš screenoff nećeš moći da vidiš kako razvlači blok marker i one među poteze koje bi inače video. probaj da napraviš makro koji imati neki posao na ekranu (promena veličine prozora, markiranje...). kad budeš pustio taj makro, onda ćeš videti (ubrzano) kako qedit to sam radi. e, sad, ako staviš screenoff onda vidiš samo pre i posle. brzina je veća samo utoliko što ne radi sa ekranom. uglavnom, to se tamo nalazi samo da bi bilo lepše za rad. > q %1 /Lborlandc.mac ovo je dobra opcija, samo ja često učitavam po nekoliko fajlova (može sa %& u 4dos-u) i volim da izlazim iz editora često. baš zbog ove druge stvari i koristim mali editor a ne IDE. SY
unknown.297 gvuckovic,
Juce sam preuzeo sa sezama DFLAT9, ali kad sam ga instalirao primetio sam da mi fale heder fajlovi u ĐSYS direktorijumu.Pa ako ima neka dobra dusa nek mi ih posalje Inace imam Turbo C . Unapred hvala, Goran..
unknown.298 psti,
Da li neko moze da mi pomogne. Naime prevodim nekakav program pisan u Microsoft-ovom C-u na Borland C, pa ne znam neke linije da prevedem (namam uputstvo za Microsoft C). U programu stoji sledece: - void interupt cdecl far .... (Sta znaci ovo CDECL) na kraju interapt rutine stoji: - _chain_intr(....); odgovor moze i na mail psti! Hvala!
unknown.299 mjova, -> #298, psti
> Da li neko moze da mi pomogne. Naime prevodim nekakav > program pisan u Microsoft-ovom C-u na Borland C, pa ne > znam neke linije da prevedem (namam uputstvo za Microsoft > C). U programu stoji sledece: samo da si pogledao help, video bi... ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ cdecl (keyword) ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Declares a variable or a function using a C-style naming convention (case-sensitive, with a leading underscore appended). cdecl <data-definition> ; OR cdecl <function-definition> ; In addition, cdecl declares C-style parameter passing conventions when applied to a function header (last parameter pushed first, and the caller cleans up the stack). Example ▀▀▀▀▀▀▀ int cdecl FileCount; far cdecl HisFunc(int x); SY
unknown.300 vilic,
Hi, da li je ovo tema i za C++, ako jeste onda je ovo pravo mesto za ovaj tekst sa najčešće postavljanim pitanjima o C++. Tekst je skinut sa TCPLUS list servera. bye
unknown.301 djelovic,
Stepujem ja malopre (tap-tok-tap-tap-tok) kroz sledeci program u IDE-u TC++-a: ----------------------------------------------- 1: if (*p) 2: *q++ = *p++; 3: while (*p) { 4: if (!(prez-- % 3)) 5: if (prez) 6: *q++ = ','; 7: *q++ = *p++; 8: } ----------------------------------------------- i posle naredbe u prvom redu ne izvrsi se naredba u drugom nego ona u sedmom. Eto sta je optimizacija!
unknown.302 bulaja, -> #300, vilic
│** Uz poruku 'cppfaq.arj' (62423 bytes) └─── Prebaceno u \IBMPC\INFO. Thanks na prilogu.
unknown.303 ppekovic,
Verovatno svi znate za 'register' kvalifikator (jooj prevoda). Naime, kada se varijabla deklariše kao recimo: register int i; onda će kompajler pokušati da njenu vrednost čuva u nekom od registara umesto u memoriji. Jasno je kolike se uštede u brzini mogu ponekad postići upotrebom registara. Ono što je mene zanimalo je algoritam po kom kompajler određuje da li u određenom trenutku ima slobodnih registara, i ako ima, kom kandidatu, ako ih ima više od registara, dodeliti registar, a kog strpati u memoriju. Probao sam jedan jednostavan program: main() š register int i, j, k, l, z=0; for(i=0;i<=100;i++) for(j=0;j<=100;j++) for(k=0;k<=100;k++) for(l=0;l<=100;l++) z++; ć Kompajler je "dao" SI i DI registre i i j varijablama, a ostale je smestio u memoriju. Ok. a šta ako promenim redosled u deklaraciji, tj stavim: register k, l, i, j, z=0; SI i DI su dodeljeni k i l varijablama. Ovo se sve dešavalo sa isključenom optimizacijom. Kada sam izbacio taj switch (/Od), opet isto, algoritam se i dalje ponašao prilično glupo, tj. umesto da brojačima unutrašnjih petlji dodeli registre, a spoljnim memoriju, kompajler je i dalje išao po kriterijumu rasporeda u liniji za deklaraciju. Pitanje! Da li postoji neki switch, direktiva i sl. vezan za ovaj algoritam? Paya
unknown.304 djelovic, -> #303, ppekovic
> Ovo se sve dešavalo sa isključenom optimizacijom. Kada > sam izbacio taj switch (/Od), opet isto, algoritam se i dalje > ponašao prilično glupo, tj. umesto da brojačima unutrašnjih > petlji dodeli registre, a spoljnim memoriju, kompajler je i > dalje išao po kriterijumu rasporeda u liniji za deklaraciju. Well, sa direktivom register ti zapravo daješ kompajleru 'hint' koje promenljive da koristi kao registarske. Kompajler ti slepo veruje ( :) ) i misli da ćeš ti poređati promenjlive po važnosti. Ukoliko želiš da on razmišlja svojom glavom, uključi register optimization i uživaj. E sad, fora je da za (po brzini) kritične f-je (ukoliko ih ne pišeš na asembleru) ti sam odrediš koje su promenjljive registarske, jer ti to ipak radiš mnogo bolje od kompajlera, a njega da pustiš da se muči sa ostalima (nisu vredne tvoga truda). Malo ručnog doterivanja vredi više nego sve optimizacije ovog sveta. Pogotovu ako imaš MS C koji može lokalno da uključuje razne tipove optimizacije. Mala napomena vezana za registarske promenjljive: Ako tvoj program operiše sa interaptima (f-je intXX i slične) onda izbegavaj korišćenje registarskih promenjljivih, umeju i te kako da zajebu stvar.
unknown.305 dgrbic, -> #303, ppekovic
:: Da li postoji neki switch, direktiva i sl. vezan za :: ovaj algoritam? Probaj da izbaciš deklaraciju (kvalifikaotr :) register i da to prepustiš optimizaciji. Kada eksplicitno tražiš register promenljive, normalno je da kompajler ne zna za koji će ti, pa će pokušati da ih po redu strpa u registre. A 8088 je tanak sa registrima...
unknown.306 nkbog,
Sinoć mi se desila interesantna stvar sa BCC-om i MAKE-om: Naime prevodio sam program oko ponoći - i desilo se to da su sve generisane datoteke bile jučerašnjeg datuma, ali sa vremenom neposredno posle ponoći. Mislim da je do ovoga došlo jer sam koristio mogućnost MAKE-a da skupi sve ciljne datoteke u jedan niz, i mogućnost BCC da prevede više datoteka sa jednim učitavanjem (obrađujući gorepomenut niz). Izgleda da BCC uzima datum u trenutku svog učitavanja, a ne u trenutku snimanja .OBJ datoteke. Naravno, verovatnoća pogrešnog datuma je mala, ali ako imate puno datoteka i prevodite oko ponoći - ko vam je kriv kad ne radite ko svi normalni ljudi danju, a ne noću. NB. p.s. NB Ono sa MAKE se izvodi preko impliciranih pravila uokvirujući makroe u vitičaste zagrade (npr. {$< } stavlja u komadnu liniju niz svih datoteka koje treba obraditi zajedno sa njihovim ekstenzijama). p.p.s. ovo drugo NB znači Nota Bene - otprilike: važna pribeleška.
unknown.307 dnikolic,
Radim neki poslic u Borland Turbo C 2.0. Imam projekat od 5 fajlova. Desava mi se sledeca stvar: kazem mu da uradi Build All, i on to uradi, medjutim, posle toga, svaki put kompajlira sve fajlove, bez obzira da li sam rekao samo RUN ( alt-R-ENTER ) ili Goto Cursor( F4). To tako traje jedno vreme, pa se samo od sebe sredi ( sto rece balinda (?) ). Mislio sam da je uzrok ovom kes program koji kesira i pisanje, ali se njegovim iskljucenjem stvar ponavlja. Koristim SUPERPCK iz paketa PC-KWIK 4.02. U cemu je stvar? :) dn
unknown.308 nandi, -> #307, dnikolic
> Radim neki poslic u Borland Turbo C 2.0. Imam projekat od 5 fajlova. > Desava mi se sledeca stvar: kazem mu da uradi Build All, i on to uradi, > medjutim, posle toga, svaki put kompajlira sve fajlove, bez obzira da li > sam rekao samo RUN ( alt-R-ENTER ) ili Goto Cursor( F4). To tako traje > jedno vreme, pa se samo od sebe sredi ( sto rece balinda (?) ). pretpostavka je da sve vreme imaš opciju prekompajlirani hederi on. i ja sam primetio da ponekad algoritam koji određuje koji modul se kad kompajlira malo škripi, ali ne ovoliko. obrati pažnju na sledeću stvar: u heder falovima (*.h) treba da se nalaze samo deklaracije, a ne i definicije (iliti implementacije). znači char *ime može, a char ime[20] već ne može. tj može, ali onda bc to ne može da strpa u *.sym datoteku nego svaki put kompajlira heder izpočetka (kao da je *.c) i kompajlira i sve module u kojima se javlja tzj heder. nandi
unknown.309 janko,
Skoro sam nešto gledao Zoranov komunikacioni program iz R57. E, tamo ima linija scanf sa formatom u kojoj idu redom postotak, leva srednja zagrada, pa strelica na gore, pa kvačica pa desna srednja zagrada. Šta to znači? (Morao sam ovako, jer oni koji nemaju YUSCII bi se čudili sto godina, da sam citirao liniju -- samo Š-ovi, ž-ovi itd).
unknown.310 janko,
Neko je pominjao OOP skoro, pa hajde malo na tu temu. Ko ima, i kakve, gotove klase za C++ ? Mene zanima, napr, rad sa stringovima, ali na turbo-paskalski način (da je i chr(0) normalan znak, da radi + za konkatenaciju, itd.) Ako niko nema, to ću sigurno i sam napisati. Zatim, univerzalno parsiranje komandne linije, sve sa džokerima, opcijama i opcijama uz koje se navode fajlovi i datoteke sa spiskovima fajlova, napr: ACTION -p -q aa.rrr čfil.lst -xčfilx.lst -z Pa prozori, miševi, na niskoj i visokoj rezoluciji, žitanje i upis .DBF datoteka...
unknown.311 janko, -> #306, nkbog
> Sinoć mi se desila interesantna stvar sa BCC-om i MAKE-om: > > Naime prevodio sam program oko ponoći - i desilo se to da > su sve generisane datoteke bile jučerašnjeg datuma, ali sa > vremenom neposredno posle ponoći. Ma, mislim da nema to veze sam sa tim Make ili BCC-om. To je zez u MS-DOS-u, čini mi se. Znam da se i meni događalo, i to da nisam zaključio kada se to događa. Neko od sezamovaca ti sigurno može reći više o ovome.
unknown.312 janko, -> #308, nandi
>> Radim neki poslic u Borland Turbo C 2.0. Imam projekat od > > pretpostavka je da sve vreme imaš opciju prekompajlirani > hederi on. > žini mi se da čovek ipak priča o TC 2.0, inače ne bi pomenuo Turbo, a nije ni plusiće stavio. :)