[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: C-cko
Neman zkusenosti se StormC, jen s Borland C++ a linuxovskym GCC, ale
ono to bude vsude podobne.
> Zdravim,
> ptam se jakozto absolutni laik a prosim o jednoduchou odpoved.
>
> Co je to, kdyz naka firma uvolni zdrojaky? To jako v C-cku? Kdyz ano,
> tak proc je tech souboru vzdycky hodne a ne jen jeden, kterej se
Protoze zdrojaky k vetsimu programu maji nekolik desitek (i set) tisic
radku a kdyby to vsechno bylo v jedinem souboru, tak se v tom nikdo
nevyzna, je si predstav to prohlizeni pomoci PgUp a PgDown. Proto je
zvykem rozdelit zdrojak do vice soboru, kde v kazdem jsou soustredeny
funkce pro urcitou oblast (v jednom treba nacteni nebo ulozeni souboru
na disk, v jinem nastaveni konfigurace, atd.)
Dalsi duvod vyplyva z podstaty cecka, ktere umoznuje definovat
staticke globalni promenne, ktere jsou viditelne ve vsech funkcich
definovanych v ramci jednoho souboru. Je dost dobre, aby globalni
promenna byla videt jen tam, kde chci a ne uplne vsude, kde ji mohu
omylem zmenit, takto se dosahuje urcite modularity programu..
> prevede? Proc sou tam a co znamenaji koncovky jako .c .o .link .debud
> .h .fd atd? To se pak extra nacte treba do StormC a tam se nejak
> prevedou odkazy na amiga-format? To, ze to vse v StormC zkompiluju,
.c je zdrojak v cecku, .h je hlavickovy soubor (v podstate taky
zdrojak), ktery zpraidla obsahuje deklarace a behem kompilace se
direktivou #include automaticky vlozi do kompilovaneho souboru - mas
jednak "standardni hlavickove soubory", ktere jsou dodany s
kompilatorem a obsahuji deklarace standardni knihovny funkci, dalsi si
muzes vytvorit sam. Treba potrebujes v peti souborech mis stejne
deklarace - mas dve moznosti, bud to petkrat opises nebo do das do
zvlastniho souboru .h a ten pomoci #include vlozis do tech peti
souboru.
.o bude zrejme obektovy modul, kompilace v ceku probiha dvoufazove
(jako u vetsiny jazyku), napred se provede vlastni kompilace, kdy se z
kazdeho zdrojoveho souboru (ke kazdemu .c vznikne samostatny .o)
vyrobi "objektovy modul" - uz je to strojak, ale nema vyreseny odkazy
na externi funce a neni schopen spusteni. Pote nasleduje linkovani, kdy
se vyresi odkazy na externi funkce a vsechny .o se slepi do jednoho
exe, je takto mozne spojit objektove moduly z ruznych jazyku, dost
casto se pouziva spojeni cecka a assembleru (program, ktery provadi
druhou fazi se jmenuje linker, vetsina modernich prekladacu ovsem
obe faze provede najednou, v pripade potreby daji oddelit, tomuto
programu se pak poknekud nepresne rika kompilator, byt je to zaroven i
linker - teto nepresnoti se dopoustim i ja v tomto textu).
Abys nemusel tohle delat rucne, vetsina prekladacu obsahuje
prostredky, ktere tuto cinnost automatizuji (v Borlandu je to projekt,
v GCC makelink, tady by to mohl byt onen soubor .link). Zpravidla je to
soubor, ktery obsahuje sadu predpisu, co a kde se ma kompilovat a s cim
slinkovat. Vetsinou to podporuje i automaticke zjistovani zavislosti,
kdy se pri zmene v jednom zdrojovem souboru provede kompilace jen
tohoto souboru a nekompiluje se cely projekt (coz muze byt casove dosti
narocne).
> znamena, ze to prevedu do assembleru?
>
Ne do assembleru, ale do strojoveho kodu, assembeler je jazyk ktery
usnadnuje zapis programu ve strojovem kodu. Dost kompilatoru ma
ovsem moznost kompilovat pres assembler, kdy ti jako meziprodukt
poskytne i assemblerovsky zdrojak a muzes se podivat, jak to ten
kompilator vlastne dela.
Ales Zika
Pelhrimov
E-mail : Ales.Zika@pel.cb.ds.mfcr.cz
- References:
- C-cko
- From: BMartin@tnet.cz (Bren Martin)