unknown.211nandi,
-> #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.212mjova,
-> #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.213nkbog,
-> #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.214ppekovic,
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.215alexa,
-> #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.216alazic,
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.217mjova,
-> #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.218sslavko,
-> #216, alazicJa 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.219dzakic,
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.220djelovic,
-> #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.221cacxa,
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.222djelovic,
-> #221, cacxa Stavi <iostream.h> umesto <stream.h>. I pisi originalnije programe :).
unknown.223cacxa,
-> #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.224djelovic,
-> #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.225nkbog,
-> #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.227dbojan,
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.228mjova,
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.229radunovic,
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.230nkbog,
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.231dgrbic,
-> #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.232bojanp,
-> #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.233dbojan,
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.arjunknown.234radunovic,
-> #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.235bojt,
-> #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.236prvul,
-> #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.237sslavko,
-> #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.238dnikolic,
Kako da ispisujem tekuci datum i vreme? Ali tako, da ako neko koristi pro-
gram nocu, u ponoc promeni datum!
dn
unknown.239nandi,
-> #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.240ivans,
-> #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.241prvul,
-> #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.242cacxa,
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.243alexa,
-> #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.244alexa,
-> #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.245djelovic,
-> #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.246igor.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.247igor.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.248igor.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.249ljupco,
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.250duduk,
-> #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.251alexa,
-> #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.252ljupco,
-> #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.253mjova,
-> #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.254ljupco,
-> #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.255mjova,
-> #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.256sslavko,
Ima li ko iskustva sa Dflat-om? Interesuje me sve u vezi ove
biblioteke od instalacije do koriscenja.
Pozdrav
Slavko.
unknown.257dnikolic,
-> #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.258gristic,
-> #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.259sslavko,
-> #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.260dnikolic,
-> #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.261sslavko,
-> #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.262dusanp,
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.263dr.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.264mjova,
-> #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.265dbojan,
Kako snimiti screen u datoteku (i vratiti ga nazad) sa MSC6 ???
unknown.266bearboy,
-> #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.267djelovic,
-> #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.268djelovic,
-> #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.269nkbog,
-> #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.270pjankovic,
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.271bojanp,
-> #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.273djelovic,
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.274nesavic,
Pitanje: da li sa MSC 6 mogu da se pisu programi za WIN?
unknown.275ivans,
Interesuje me kolike su razlike izmedu Dflat3 i Dflat9. Sta mislite?
Pozdrav,
Ivans.
unknown.276djelovic,
-> #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.277dejanr,
-> #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.278alexa,
-> #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.279dusanp,
-> #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.280nesavic,
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.281dzakic,
-> #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.282dgrbic,
-> #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.283duduk,
-> #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.284ljupco,
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.285nesavic,
-> #283, dudukHvala, probacu pa cu da javim...
unknown.286duduk,
-> #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.287ljupco,
-> #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.288ljupco,
-> #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.289mjova,
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.arjunknown.290zsavic,
Gde može da se nabavi C++ 2.0 predprocesor za MSC 6.0 ?
SAVA
unknown.291iboris,
Da li neko zna gde mogu da nabavim grafičke biblioteke za C ,
ZINC
C-SCAPE
Zahvaljujem unapred na svakoj informaciji !
Pozdrav,
Boris
unknown.292dusanp,
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.293dejanr,
-> #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.294vbole,
-> #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.295bulaja,
-> #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.296mjova,
-> #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.297gvuckovic,
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.298psti,
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.299mjova,
-> #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.300vilic,
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.301djelovic,
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.302bulaja,
-> #300, vilic│** Uz poruku 'cppfaq.arj' (62423 bytes)
└───
Prebaceno u \IBMPC\INFO. Thanks na prilogu.
unknown.303ppekovic,
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.304djelovic,
-> #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.305dgrbic,
-> #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.306nkbog,
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.307dnikolic,
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.308nandi,
-> #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.309janko,
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.310janko,
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.311janko,
-> #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.312janko,
-> #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. :)