Standardsed funktsioonid

Selles peatükis käsitletakse C - keele standardseid funktsioone ja päisefaile. Programmeerimiskeeles C ei lisata programmile mingeid standardseid funktsioone. Kõik funktsioonid on salvestatud vastavatesse teekidesse. Nende kasutamiseks tuleb nimetatud teek programmiga siduda (linkida) ja lisada programmile vastav päisefail eeltranslaatori käsuga #include. Viimane sisaldab antud teegi funktsioonide deklaratsioone, mitmeid vajalikke sümboolseid konstante, makrosid ja ka teegile vajalikke globaalseid muutujaid. Mõnevõrra keeruline on sobivate päisefailide ja teekide leidmine. Päisefailid on jaotatud teemade järgi. Iga päisefail sisaldab teatud ülesannete grupiga tegelevaid funktsioone. Kuna aga igasse taolisesse gruppi kuulub suurel hulgal funktsioone, siis on loodud ka sellised päisefailid, mis sisaldavad vaid ühte osa nendest funktsioonidest. Üldiselt on soovitav programmi lisada võimalikult vähe päisefaile. See kiirendab translaatori tööd ja vähendab programmi suurust. Nii on osa funktsioonide deklaratsioonid enamates päisefailides. Mõned funktsioonid vajavad teiste funktsioonide abi ja nii sisaldavad ka nende päisefailid kas otse vastavate funktsioonide deklaratsioone või on vajalik päisefail neisse omakorda #include käsuga lisatud. Järgnevates peatükkides käsitleme funktsioone vastavalt nende tööülesannetele.

Teegid on jagatud nii mälumudelite kui ka teemade järgi. Kui te vaatate oma kataloogi \BORLANDC\LIB sisu, siis näete seal hulganiselt *.LIB (teegid) ja *.OBJ (objektkood) faile.

Iga programmiga seotakse vähemalt üks *.OBJ ja üks *.LIB fail. Selline *.OBJ fail sisaldab programmi alguses täidetavat koodi. See kood kopeerib programmi nime ja talle üleantud parameetrid programmi andmesegmenti. Andmesegmendist saab neid parameetreid lugeda funktsiooni main() parameetrite argc ja argv abil. Vastavalt mälumudelile listakse programmile kas C0S.OBJ, C0M.OBJ, C0C.OBJ, C0L.OBJ või C0H.OBJ. Seejuures näitab objektfaili nime esimese osa viimane täht (S, M, C, L või H), millise mälumudeliga on tegemist. Kõik standardsed funktsioonid on kogutud teeki C<mälumudelit näitav täht>.LIB. See ei tähenda aga, et programmile lisatakse kogu selle teegi sisu. Programmi koodisegmenti kopeeritakse vaid nende funktsioonide kood, mille deklaratsioon on lisatud programmi.

Matemaatilised funktsioonid on salvestatud eraldi teeki MATH<mälumudelit näitav täht>.LIB. Ka need teegid erinevad vastavalt kasutatud mälumudelile. Kui teie arvuti ei sisalda matemaatikaprotsessorit (koprotsessorit), siis tuleb programmiga siduda ka teek: EMU.LIB. See teek on vajalik matemaatiliste funktsioonide kasutamiseks ilma koprotsessori abita. Kui te aga omate koprotsessorit, siis siduge programmiga hoopiski FP87.LIB. See teek kasutab matemaatiliste funktsioonide jaoks koprotsessorit.

Graafikafunktsioone kasutavad programmid vajavad veel teeki GRAPHICS.LIB ja osadesse jaotatavad programmid vajavad teeki OVERLAY.LIB. Kui te soovite luua Microsoft Windowsi programme, siis tuleb teil valida teised *.OBJ ja *.LIB failid, mis enamast sisaldavad oma nimes tähte W, näiteks C0WS.OBJ ja CWS.LIB.

Kui te kasutate oma programmide transleerimiseks Borland C/C++ programmeerimiskeskkonda, siis võite määrata kõik need valikud kindlaks menüü Options käskudega. Lihtsa programmi jaoks aitab, kui määrata menüü Options dialoogis Application, et tegemist on DOSi *.EXE programmiga ja valida seejärel sobiv mälumudel menüü Options | Compiler dialoogist Code Generation. Tehtud valikud salvestatakse *.PRJ faili. Nüüd "teab" translaator ise, millist C0x.OBJ ja Cx.LIB faili programmiga siduda. Kui teie programmi kasutab graafika- või matemaatilisi funktsioone, siis tuleb ka vastav teek temaga siduda. Seda saate määrata menüü Options | Compiler dialoogist Code Generation.

Allpool näete üht programmi MAKE andmefaili, mis sobib üsna suurele hulgale programmidele. Teil tuleb lihtsalt määrata sobivad parameetrid. Siintoodud fail on määratud näiteprogrammi INTEGRAL transleerimiseks.


MAKEFILE

#----------------------------------------------------------
#---  MAKEFILE
#---
#--- Andmefail programmile MAKE translaatori juhtimiseks
#----------------------------------------------------------

#Asendage järgmistel ridadel määratud parameetrid
#teie programmi jaoks sobivatega

SOURCE = INTEGRAL               #siia tuleb teie programmi nimi
MODEL = s      			#Esialgu SMALL mälumudel.  

INCPATH = C:\BORANDC\INCLUDE    #kus asuvad teie päisefailid
LIBPATH = C:\BORLANDC\LIB       #ja teegid
OBJS = C0$(MODEL).OBJ $(SOURCE).OBJ
LIBS = EMU.LIB MATH$(MODEL) C$(MODEL).LIB  #kui te vajate teisi teeke, 
       #siis lisage nende nimed siia
CFLAGS = -c -I$(INCPATH)
LFLAGS = /v/x/c/P-/L$(LIBPATH)

$(SOURCE).EXE: $(SOURCE).OBJ $(SOURCE).C
	TLINK $(LFLAGS) $(OBJS), $(SOURCE).EXE, , $(LIBS),

$(SOURCE).OBJ:	$(SOURCE).C
	BCC  $(CFLAGS)  $(SOURCE).C