Kun teen koodia tallentuu se .c -tiedostona. Netistä löytyvissä malleissa on myös samanniminen .h -tiedosto.
Mikä on .c ja .h tiedoston ero?
c-koodi
3236
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 3
Vanhimmat
Headereita tarvitaan esim. jos koodailee dynaamisia dll tai so -sovelluskirjastoa, eli headereissa on liittymä (rajapinta) näihin kirjastojen toimintoihin. Toki myös headerit tarvitaan itse ohjelmaan kääntämiseen, jossa toiminnot on jäsennelty eri c-tiedostoihin, ellet sitten koodaa koko softaa yhden c-tiedoston varaan?
Eli käännös: "gcc -c vuohi.c aasi.c oranki.c -o animaali". Ja jos haluat aasi.c:stä käyttää oranki.c:n toimintoja, pitää aasi.c:n alkuun pistää #include "oranki.h"
Tunnetuin yleisesti käytetty .h-tiedosto on varmaan stdio.h, joka sisältää mm. koko joukon valmiiksi määriteltyjä sellaisia funktioita kuin fclose, feof, fflush ja *fopen. Jos niitä ei olisi valmiiksi tarjolla, niin koko c-ohjelmointi muuttuisi aika tylsäksi hommaksi. Miksi pyörä pitäisi keksiä uudestaan?
Tyypillisen c-kielisen ohjelman kääntäminen konekielelle tapahtuu esimerkiksi kolmessa vaiheessa. Ensimmäisessä vaiheessa alkukielinen ohjelma esikäsitellään (preprocessing) niin, että mm. #include-käskyt ja niiden sisältämät viittaukset .h-tiedostoihin korvataan niiden sisältämillä merkkijonoilla. Näin laajennettu (c-kielinen) ohjelma käännetään sitten (useimmiten) asembler-kieliseksi, mutta ohjelman mahdollisesti sisältämät viittaukset muihin (objekti-)tiedostoihin jätetään vielä selvittämättä. Viimeeksi näin saadun puolivalmiin (asembler-)ohjelman sisältämät viittaukset korvataan toimivilla linkeillä ao. tiedostoihin.
.c tiedostoihin menee toteutus ja .h tiedostoihin rajapinta.