Korduvkasutatava koodi (teegi) loomine

Järgnevas näites vaatame kuidas võiks struktureerida enda koostatud teegifaile, mis suudavad ka infot salvestada enda sisse ilma, et seda teeks meie eest teadmist kasutav programm.

Märkused:

  • Järgnev on kirjeldatud ideena millest saad paralleeli võtta ja hakata enda vajalikku teeki üles ehitama. Logimise teeki saad näiteks Kodutöö 2 juures juba ära kasutada.
  • Teek, mille kokku kompileerid ja lisad oma programmile, suurendab su lõpptoote suurust – seda tuntakse ka kui staatiliselt kompileeritud teek (statically compiled library)
  • Tehniliselt võttes ei ole selle näite lõpuks valmis veel teek – seda aga ainult seetõttu, et me jätame teegiks kompileerimise ja pakendamise vahele – selle võid aga ise julgelt teha, viite leiad kohe järgmise punkti alt. Koodis ei muutu midagi! Lihtsuse huvides viitan ülejäänud tekstis loodavale koodile jäkuvalt teegina.
  • Kui soovid teegiks kompileerimise kohta lugeda, vaata siia: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html. Staatiline teek lõppeb laiendiga .a .

Teegi päisefail

Pane siia kõik mida soovid ülejäänud maailmale näidata ja mida neil vaja võib minna – nt väljakutsutavad funktsioonid, struktuuride kirjeldused jne. Nii nagu ikka.

Märkus: päiseid võib olla ka mitu – kõik neist ei pea olema “avalikud”, osa võivad kirjeldada ka sisemisi funktsioone mida kolmandad osapooled otse kasutama ei peaks.

Teegi kood

Teegi enda jooksutatav kood peaks olema terviklik – st eelistatult ei ole sellel vaja otseseid seoseid sinu peaprogrammiga ning teegiga suhtlemine käib läbi teegi poolt pakutavate funktsioonide.

Aegajalt on mõistlik, et teegil on ka enda sisemised globaalsed muutujad – nende väärtused säilivad ning siis ei pea muretsema, et kasutaja programm nendel järge peab.

Samas see pole ka reegel – sageli annavad teegid kasutajale siiski hallata oma seadistuse, tagastades näiteks viida struktuurile, mille teek loob. Selle struktuuri sees saab olema kõik vajalik seadistus ja informatsioon. Seda me antud näites ei kajasta aga näiteks võid mõelda mida tagastab fopen() (mis andmeid selle viida poolt hoitud struktuur sisaldab)

Teeki kasutav programm

Teegi lisamiseks koodi lisame selle päisefaili vastavalt siis kas jutumärkide vahel või noolsulgude vahel (olenevalt kuidas teek paigaldatud ja seostatud on). See aitab koodiredaktoril ja kompilaatoril arvestada teegi pakutava funktsionaalsusega.

Kompileerida võid käsurealt kõik failid kokku kui nad on sellisel kujul nagu praegu.

Kui teek on antud .a failina, siis vaata täiendavat juhendit, mis oli pakutud varasemalt.