Proseduraalinen ohjelmointi, harjoitus 1.1 gcc kääntäjän optiot (ks. 'man gcc') ------------------------------------ -std=xxx, jossa xxx esim. c89 tai c99 Valitsee käytettävän c-standardin (ISO C90, ISO C99) Käytettävä standardi vaikuttaa hyväksyttyihin kielen rakenteisiin, esim. Java/C++ -tyyppiset kommentit (// kommentti) eivät ole sallittuja C90-standardissa (joskin gcc oletusarvoisesti hyväksyy ne) Oletusarvona C90 -Ixxx, jossa xxx include-tiedoston polku Hakemisto, josta kääntäjä (esiprosessori) etsii otsikkotiedostoja, jos ne eivät ole oletushakemistossa (esim. /usr/include) Optiolle ei anneta varsinaista include-tiedoston nimeä, ainoastaan polku esim. gcc ohjelma.c -I/usr/local/include etsii otsikkotiedostoja /usr/local/include -hakemistosta (oletushakemiston lisäksi) -lxxx, jossa xxx on kirjaston nimi linkittää ohjelman kirjastoon xxx esim. ohjelma #include int main(int argc, char* argv[]) { double a = sin(a); return 0; } käännetään komennolla gcc ohjelma.c -lm jossa m on (epäloogisesti) otsikkotiedostossa math.h määritellyt funktiot sisältävä kirjasto -S Keskeyttää kääntämisen ennen linkittämistä. Objektitiedoston sijaan tuloksena on .s -päätteinen tiedosto, jossa on ohjelma käännettynä symboliselle kielelle -Dxxx, jossa xxx on nimi Määrittää nimen esiprosessorille esim. { ... #ifdef DEBUG /*täällä oleva koodi suoritetaan, jos kääntäjä saa option -DDEBUG */ #endif /* täällä oleva koodi suoritetaan joka tapauksessa */ .. }