Co to jest kompilacja warunkowa?

W programowaniu komputerowym kompilacja warunkowa opisuje zdolność kompilatora oprogramowania lub procesora kodu źródłowego do uwzględnienia lub zignorowania niektórych poleceń lub bloków kodu na podstawie instrukcji specyficznych dla języka, które nie są technicznie częścią specyfikacji podstawowego języka programowania. Polecenia używane do wyzwalania kompilacji warunkowej w programie często nazywane są dyrektywami preprocesora, chociaż mogą być również znane jako dyrektywy kompilatora, komentarze warunkowe lub definicje warunkowe. W zależności od używanego kompilatora lub języka, dyrektywami warunkowymi mogą być zmienne lub makra zdefiniowane przez użytkownika lub mogą to być również zmienne systemowe ustawione przez kompilator lub system operacyjny. Kompilacja warunkowa często służy do konfigurowania jednego zestawu plików kodu źródłowego, dzięki czemu można je kompilować w różnych środowiskach lub systemach operacyjnych bez konieczności wymiany lub zmiany plików źródłowych.

Definicje warunkowe używane do testowania kompilacji warunkowej mogą różnić się w zależności od języka, ale ogólnie są to makra lub inne wyrażenia metadanych poza zakresem normalnych zmiennych programu. W językach takich jak C zmiennymi są zwykle makra odczytywane przez procesor wstępny. Przez większość czasu makra nie są dostępne przez rzeczywisty kod źródłowy programu wykonywalnego, nawet jeśli istnieją w tych samych plikach źródłowych.

Dyrektywy używane do testowania zdefiniowanych zmiennych warunkowych są szczątkowe i są zgodne z tą samą logiką, co instrukcja if-then. Podstawowe testy, które można wykonać dla kompilacji warunkowej, to to, czy wartość jest zdefiniowana, nieokreślona lub, w niektórych przypadkach, czy dwie zdefiniowane zmienne są równoważne. Same zmienne lub makra na ogół nie mają żadnej istotnej wartości, ponieważ czynność ich zdefiniowania jest tym, co sprawdzają dyrektywy. Jednak w przypadku niektórych języków i kompilatorów wartość zdefiniowanej zmiennej może mieć znaczenie, jeśli zostaną ocenione pod kątem stanu logicznego.

Gdy kompilator napotyka dyrektywy używane do kompilacji warunkowej, dyrektywy są oceniane pod kątem sprawdzenia, czy testują jako prawda czy fałsz. Jeśli true, kod zgodny z dyrektywą jest kompilowany normalnie; w przeciwnym razie kompilator całkowicie pominie kod zawarty w dyrektywie. Jest to odmienne od warunkowych instrukcji logicznych w samym kodzie programu wykonywalnego, ponieważ nawet jeśli logika zawiera blok kodu, którego nie można wykonać, nadal będzie interpretowana i kompilowana w większości przypadków. W przypadku warunkowych dyrektyw preprocesora pominięty kod nigdy nie jest uwzględniany, interpretowany ani kompilowany. Należy również zauważyć, że po dokonaniu przez procesor wstępny oceny wszystkich zmiennych warunkowych i dyrektyw, nie są one kompilowane z resztą programu, ponieważ mają one jedynie zapewnić kierunek kompilatorowi.

Kompilacja warunkowa najczęściej służy do uwzględnienia lub wykluczenia kodu specyficznego dla określonego systemu operacyjnego lub środowiska. Oznacza to, że biblioteki istniejące w jednym systemie operacyjnym można warunkowo uwzględnić, jeśli dyrektywy określają, że program jest kompilowany w tym systemie operacyjnym. Alternatywnie, dyrektywy można również wykorzystać do włączenia lub wyłączenia kodu na podstawie zmiennych zdefiniowanych przez użytkownika. Można to zrobić, aby kod debugowania lub profilowania nie był zawarty w ostatecznej wersji programu lub aby niektóre funkcje mogły być włączone lub wyłączone bez konieczności utrzymywania osobnych kopii kodu.

INNE JĘZYKI

Czy ten artykuł był pomocny? Dzięki za opinie Dzięki za opinie

Jak możemy pomóc? Jak możemy pomóc?