Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Sorsan jakaminen useisiin tiedostoihin

Puhveli [26.07.2006 20:21:33]

#

Iltaa. Enpäs mä tuota hakua sit osannu käyttää.

Yritän kasata monta C++-lähdekoodifilua yhteen ja kääntää ne binaariks. Miten tämä käytännössä tehdään? Liittyykö tähän jotain jänniä huomionarvoisia seikkoja (esim. pitääkö kirjastot manata #includella vain yhdessä tiedostossa, vai kaikissa?) Tärkein on tietty se, millä komentoriviparametreillä käsken kääntäjää (mingw:llä oon nuita käännelly)?

Metabolix [26.07.2006 21:55:32]

#

Includeja saa käytellä aivan vapaasti, kuten on tilanne yhden tiedoston tapauksessakin.

Suora käännös:
g++ yksi.cpp toinen.cpp -o ohjelma.exe

Kääntö objektiksi:
g++ yksi.cpp -c -o yksi.o
Objektien linkitys:
g++ yksi.o toinen.o -o ohjelma.exe

Jälkimmäisen tavan hyöty on siinä, että muuttumattomia osia ei tarvitse kääntää uudestaan, vaan voi käyttää jo olemassa olevia objekteja. Makefilen tekoa suosittelen, make hoitaa tuollaiset asiat aivan itse.

Muistuttaisin, että otsikkotiedostoihin ei tule laittaa toiminnallista koodia vaan pelkkiä esittelyjä. Poikkeuksen tekevät vain makrot ja inline-funktiot. Toisin sanoen siis otsikkotiedostoon kuuluu luokan esittely, mutta itse funktiot kirjoitetaan käännettävään tiedostoon. Jos muuttuja pitää saada näkymään useamman kooditiedoston alueella, se esitellään otsikkotiedostossa extern-avainsanan kanssa ja määritellään vain yhdessä kooditiedostoista. (Tämä on varmaankin paras esimerkki tähän mennessä: https://www.ohjelmointiputka.net/keskustelu/10803-funktiot-ojennukseen)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta