Kompilacja warunkowa

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

Kompilacja warunkowa jest techniką kompilacji stosowaną w wielu językach programowania. Polega ona na uzależnieniu kompilacji fragmentów kodu programu od spełnienia podanych warunków.

Preprocesor – w programowaniu – to program komputerowy, którego zadaniem jest przetworzenie kodu źródłowego, w sposób określony przez programistę za pomocą dyrektyw preprocesora, na kod wyjściowy – tak przetworzony kod źródłowy poddawany jest następnie analizie składniowej i kompilacji.Program komputerowy (ang. computer program) - sekwencja symboli opisująca obliczenia zgodnie z pewnymi regułami zwanymi językiem programowania. Program jest zazwyczaj wykonywany przez komputer (np. wyświetlenie strony internetowej), czasami bezpośrednio – jeśli wyrażony jest w języku zrozumiałym dla danej maszyny lub pośrednio – gdy jest interpretowany przez inny program (interpreter). Program może być ciągiem instrukcji opisujących modyfikacje stanu maszyny ale może również opisywać obliczenia w inny sposób (np. rachunek lambda).

Ta technika wykorzystywana jest do tworzenia różnych wersji programów w oparciu o ten sam kod źródłowy np. dla zróżnicowania na potrzeby testowe i programu końcowego.

Język programowania umożliwiający kompilację warunkową musi mieć dyrektywę warunkowej kompilacji oraz dyrektywy kompilacji pozwalające na definiowanie warunków. Dyrektywa warunkowej kompilacji jest w większości przypadków wzorowana na instrukcji warunkowej.

Przykładem języka obsługującego kompilację warunkową jest C, w którym jest ona obsługiwana na poziomie preprocesora.

Definicja intuicyjna: Kod źródłowy to zapis programu komputerowego w formie czytelnej dla człowieka umożliwiający jego modyfikację i rozwój.Instrukcja - w programowaniu jest to najmniejszy samodzielny element imperatywnego języka programowania. Instrukcja może być niskiego poziomu napisana w asemblerze np. mov ax,bx, która po przetłumaczeniu na kod binarny nadaje się do uruchomienia przez procesor lub instrukcja wysokiego poziomu napisana np. w języku C: int a = 5;, która zostanie przetłumaczona na kilka instrukcji niskiego poziomu. Program jest tworzony jako zbiór różnych instrukcji. Instrukcja może zawierać wewnętrzne komponenty (np. wyrażenia).

Przykład w C/C++[ | edytuj kod]

Przykładowa zawartość pliku test.c:

#ifdef TEST
  double test = M_PI;
#else
  float test = M_E;
#endif

Kompilując ten program komputerowy przy zdefiniowanym makrze TEST (np. za pomocą gcc - gcc test.c -D TEST, bądź przez wcześniejsze użycie dyrektywy preprocesora - #define TEST), fragment ten będzie równoważny instrukcji double test = M_PI; W programie zmienna test będzie typu double i zostanie jej nadana wartość liczby π. Kompilując kod bez zdefiniowanego makra TEST otrzymamy wartość M_E.

Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.Kompilator – program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym) . Proces ten nazywany jest kompilacją. W informatyce kompilatorem nazywa się najczęściej program do tłumaczenia kodu źródłowego w języku programowania na język maszynowy. Niektóre z nich tłumaczą najpierw do języka asemblera, a ten na język maszynowy jest tłumaczony przez asembler.

Uwagi[ | edytuj kod]

  1. Jeśli chcielibyśmy skompilować ten fragment kodu jak napisany w C++, wystarczyłoby zamiast gcc użyć g++.




Warto wiedzieć że... beta

C – imperatywny, strukturalny język programowania wysokiego poziomu stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu.
Opcje kompilacji, parametry kompilacji, to zestaw argumentów i poleceń (komend dla kompilatora), sterujących procesem kompilacji kodu źródłowego w określonym języku programowania, dostępnych w określonym systemie programowania. 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.
Liczba zmiennoprzecinkowa – reprezentacja liczby rzeczywistej zapisanej za pomocą notacji naukowej. Ze względu na wygodę operowania na takich liczbach, przyjmuje się ograniczony zakres na mantysę i cechę – nazwy te mają w matematyce znaczenie podane w artykule podłoga i sufit, a w niniejszym artykule inne, powszechne w informatyce. Powoduje to, że reprezentacja liczby rzeczywistej jest tylko przybliżona, a jedna liczba zmiennoprzecinkowa może reprezentować różne liczby rzeczywiste z pewnego zakresu.
Liczba – pojęcie abstrakcyjne, jedno z najczęściej używanych w matematyce. Pierwotnie liczby służyły do porównywania wielkości zbiorów przedmiotów (liczby naturalne), później także wielkości ciągłych (miary i wagi), obecnie w matematyce są rozważane jako twory abstrakcyjne, w oderwaniu od ewentualnych fizycznych zastosowań.
Makro (lub makropolecenie) – zestaw rozkazów realizujący algorytm komputerowy przeznaczony do wykonywania przez określoną aplikację (edytor, arkusz kalkulacyjny, program graficzny) zwykle w celu automatyzacji pewnych czynności lub dokonania zmian w dokumentach bez interakcji z użytkownikiem. Makra pisane są zwykle w skryptowych językach programowania wykonywanych przez interpreter wbudowany w aplikacje, w których są uruchamiane.
Zmienna - konstrukcja programistyczna posiadająca trzy podstawowe atrybuty: symboliczną nazwę, miejsce przechowywania i wartość; pozwalająca w kodzie źródłowym odwoływać się przy pomocy nazwy do wartości lub miejsca przechowywania. Nazwa służy do identyfikowania zmiennej w związku z tym często nazywana jest identyfikatorem. Miejsce przechowywania przeważnie znajduje się w pamięci komputera i określane jest przez adres i długość danych. Wartość to zawartość miejsca przechowywania. Zmienna zazwyczaj posiada również czwarty atrybut: typ, określający rodzaj danych przechowywanych w zmiennej i co za tym idzie sposób reprezentacji wartości w miejscu przechowywania. W programie wartość zmiennej może być odczytywana lub zastępowana nową wartością, tak więc wartość zmiennej może zmieniać się w trakcie wykonywania programu, natomiast dwa pierwsze atrybuty (nazwa i miejsce przechowywania) nie zmieniają się w trakcie istnienia zmiennej. W zależności od rodzaju języka typ zmiennej może być stały lub zmienny. Konstrukcją podobną lecz nie pozwalającą na modyfikowanie wartości jest stała.
Dyrektywa kompilatora – zawarte w tekście kodu źródłowego polecenie dla translatora, wykonania określonej czynności, lub ustalające sposób translacji. Dyrektywy kompilatora nie są częścią języka programowania lecz jego standardu bądź konkretnej implementacji.

Reklama