Opcje kompilacji

Opcje kompilacji, parametry kompilacji to zestaw argumentów i instrukcji dla Kompilatora, sterujących procesem kompilacji. Opcje kompilacji w zależności od kompilatora lub środowiska programistycznego mogą być specyfikowane w różnych miejscach i formie, zarówno w systemie programowania, systemie operacyjnym jak i samym kodzie źródłowym.

Rola i znaczenieEdytuj

Opcje kompilacji są specyficznym elementem określonej implementacji danego języka programowania, wpływającym w istotny sposób na kod wynikowy generowany na podstawie kodu źródłowego. Zmiana pewnych opcji, może więc prowadzić do wygenerowania, na podstawie tego samego kodu źródłowego w danym języku, innego kodu wynikowego. Zwykle w konkretnym systemie programowania są zdefiniowane opcje domyślne kompilacji, dla dostępnego zestawu opcji kompilacji. Standardowe ustawienia dotyczą kompletnego zestawy opcji, umożliwiając przeprowadzenie kompilacji bez jawnej specyfikacji czy też zmiany tych opcji, w sposób typowy. Programista jest uwolniony od zajmowania się tą kwestią, do chwili konieczności wprowadzenia pewnych niestandardowych ustawień.

Choć zestaw dostępnych opcji kompilacji zależny jest zasadniczo od autora kompilatora, to wiele form specyfikacji tych opcji jak i standardów konkretnego języka programowania lub jego wersji, wymusza na producentach kompilatorów uwzględnianie w kompilatorze pewnego wybranego zestawu standardowych opcji kompilacji, ewentualnie rozszerzonego o opcje niestandardowe, dodane przez autora kompilatora. Oczywiście takie postępowanie ma miejsce tylko przy założeniu zgodności tworzonego kompilatora z określonym standardem.

RodzajeEdytuj

Opcje kompilacji dzieli się zwykle na dwie grupy:

globalne, główne 
tj. takie, które dotyczą całej przetwarzanej jednostki programowej (modułu)
lokalne, poboczne 
tj. takie, które są umieszczane w kodzie źródłowym i dotyczą wybranego fragmentu kompilowanej jednostki, w specyficznych przypadkach dana opcja może dotyczyć pojedynczej instrukcji.

Formy specyfikacjiEdytuj

Opcje kompilacji mogą być specyfikowane w następujących formach:

Należy zauważyć, że opcje wywołania kompilatora oraz opcje systemu programowania nie pozwalają na specyfikowanie lokalnych opcji kompilacji. Jednak umożliwiać mogą definiowanie opcji domyślnych dla lokalnych opcji kompilacji. Zdefiniowanie wartości domyślnej dla opcji kompilacji oznacza, iż takie ustawienie obowiązuje dla całej kompilowanej jednostki, chyba że kompilator natrafi w tekście kodu źródłowego na specyfikację danej, lokalnej opcji, zmieniającej ustawienie domyślne. Występujące dalej, w opisach poszczególnych form specyfikacji, stwierdzenie, że dana forma jest dostępna tylko dla opcji globalnych, należy rozumieć jako możliwość definiowana opcji globalnych i ustawień domyślnych (globalnych dla danego modułu) lokalnych opcji kompilacji (o ile konkretny kompilator dopuszcza taką formę).

Jednostka leksykalna języka programowaniaEdytuj

Jest to jednostka stanowiąca część składni określonego języka. W konkretnym języku może być taka jednostka, zgodnie z nomenklaturą danego języka, zaliczana do grupy pewnych typowych jednostek zdefiniowanych w składni tego języka, np. instrukcji; choć w swej istocie są opcjami dla kompilatora. Przykładem są instrukcje OPTIONS w języku Visual Basic.

Osobny artykuł: Instrukcja (informatyka).

PreprocesorEdytuj

Preprocesor jest rozbudowaną formą specyfikacji opcji kompilacji, często definiowaną przez określony standard języka, co powoduje uwzględnienie zestawu standardowych opcji w wielu kompilatorach dostarczanych przez różnych producentów dla tego samego języka. Przykładem jest preprocesor języka C[1].

Osobny artykuł: Preprocesor.

Dyrektywy kompilatoraEdytuj

Dyrektywy kompilatora są okrojoną formą, w porównaniu do preprocesora, specyfikacji opcji kompilacji, choć również są definiowane często przez standardy pewnych języków programowania. Przykładem są języki: Pascal[2][3] i PL/M[4].

Osobny artykuł: Dyrektywa kompilatora.

Argumenty wywołania kompilatoraEdytuj

Ten sposób specyfikacji opcji kompilatora umożliwia definiowanie jedynie globalnych opcji kompilacji, odnoszących się do całej przetwarzanej jednostki programowej. Specyfikowane są w wierszu wywołania kompilatora, zgodnie ze specyfiką konsoli tekstowej danego systemu operacyjnego, w której następuje wywołanie kompilatora. Do tej formy zaliczane jest także specyfikowanie opcji kompilacji w zdaniach języków opisu prac, np. JCL[5], dostępnych w stosowanych dawniej systemach operacyjnych oraz definiowane zmiennych systemowych, z których dany kompilator może odczytywać opcje swojego działania, oraz programach pomocniczych typu Makefile[3].

Opcje systemu programowaniaEdytuj

Dany system programowania, w szczególności zintegrowane środowisko programistyczne, może udostępniać (co dziś w graficznych systemach okienkowych jest standardem), możliwość definiowana globalnych opcji kompilacji, w systemie programowania. Są to określone okienka dialogowe umożliwiające za pomocą różnych kontrolek tworzenie zestawu ustawień. Takie systemy były dostępne także dla trybów tekstowych (np. systemy programowania serii Turbo)[1][3]. Obecnie są szeroko rozpowszechnione w graficznych środowiskach systemowych (np. MS Windows).

Dostępność form specyfikacjiEdytuj

W wielu systemach pewne opcje kompilacji, szczególnie globalne, mogą być specyfikowane w kilku formatach równocześnie, np. w formie dyrektywy, argumentu wywołania i opcji systemu (np. w kompilatorach serii Turbo)[1][3].

Również sama forma identyfikacji opcji może być:

  • różna, lub
  • jednolita,

dla różnych form specyfikacji danej opcji. Przykładowo dla kompilatora języka PL/M-80[4] opcje kompilatora identyfikowane są słowami kluczowymi z ewentualnymi argumentami wywołania, które mogą być użyte w wywołaniu kompilatora (dla opcji globalnych) w wierszu poleceń, jak i w wierszy dyrektywy kompilatora zawartej w kodzie źródłowym. Przykładowe dyrektywy to: PAGING, NOPAGING, XREF i inne.

PrzypisyEdytuj

  1. a b c Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ​ISBN 83-204-1101-7
  2. Michał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wydanie trzecie – zmienione, Seria: Biblioteka Inżynierii Oprogramowania, ​ISBN 83-204-0597-1
  3. a b c d Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika MikrokomputerówISBN 83-85060-53-7​, ISSN 0867-6011
  4. a b Jan Bielecki, PL/M język programowania mikroprocesorów, Wydawnictwa Komunikacji i Łączności, Warszawa 1987, Seria: Elektronizacja, zeszyt 25
  5. Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, ​ISBN 83-01-06146-4