C-kielen alkeisopas
C-kielinen ohjelmointi

C-ohjelmointikieli on kehitetty jo 1970-luvulla ja on edelleen varsin laajalti käytetty. Myöhemmin luotiin uusi kieli lisäämällä olio-ominaisuudet ja tästä uudesta kielestä käytetään nimitystä C++.

Lähdekoodista sovellukseksi

C-kieliselle lähdekoodi-tiedostolle käytetään yleensä tarkenninta .c (.cpp on yleensä C++ koodia sisältävä tiedosto). Header-tiedostojen tarkennin on .h ja niissä on kuvattu ohjelmassa käytettävien funktioiden rakenne. Funktioiden varsinainen koodi on kuitenkin .c-tiedostoissa.

Windowsissa suoritettavien sovellusten tarkennin on .exe. Jos siis kirjoitetaan suoritettava sovellus nimeltään myApp, on C-kielisen kääntäjän tuottama suoritettava tiedosto nimeltään myApp.exe. Linuxissa ja MACissa suoritettava tiedosto on yleensä ilman päätettä eli se olisi myApp

Yksinkertaisesti voidaan kuvata c-sovelluksen luontia näin:

  1. ns. esikääntäjä lukee .c tiedostoa ja etsii sen alussa olevia #include-rivejä. Näillä riveillä mainitut tiedostot lisätään koodiin
  2. C-kääntäjä lukee .c-tiedoston ja luo .exe-tiedoston.

Linkittäminen ja kirjastot

Edellä sovelluksen luonti kuvattiin yksinkertaistettuna. Tarkempi kuvaus edellyttää kahden uuden asian selitystä: linkkeri ja kirjastot. Kirjastot eli kirjastotiedostot ovat valmiiksi käännettyjä tiedostoja. Ne eivät kuitenkaan ole itsenäisesti suoritettavia kuten exe-tiedostot. Ne voivat olla ohjelmoijan itsensä kirjoittamia tai C-ohjelmointiympäristön mukana toimitettuja tiedostoja. Windowsissa näiden kirjastotiedostojen tarkennin on dll.

Esimerkiksi haluat kirjoittaa sovelluksen, jossa lasketaan neliöjuuri. Tarvittava funktio sqrt löytyy C ohjelmointiympäristön mukana toimitettavista kirjastoista (esim. libmmd.dll). Ja saat tuossa kirjastossa olevat funktiot käyttöön lisäämällä sovelluksesi alkuun viittauksen header-tiedostoon math.h seuraavasti;

  • #include<math.h>

Tarkemmin kuvattuna kääntäminen eli exe-tiedoston muodostaminen tapahtuu kahdessa vaiheessa:

  1. Esikääntäjä lukee include-rivit ja kääntäjä muodostaa ns. objektitiedoston, jossa kirjastorutiinien tilalla on "tyhjät" kutsut.
  2. Linkkeri korvaa em. tyhjät kutsut kirjastorutiinien osoitteilla ja näin saadaan valmis sovellus eli exe-tiedosto

Tiedostopäätteitä
Tiedostopääte Tiedostotyyppi
.a static library file
.c C language file
.cpp C++ language file
.dll Dynamic Linked Library file (Windows)
.h C Header file
.lib In UNIX a list of objects. In Windows a collection of objects.
.o UNIX Object file
.so Dynamic Shared Library file (UNIX )



Toggle Menu