Skip to main content

Co to jest kompilacja warunkowa?

W programowaniu komputerowym kompilacja warunkowa opisuje zdolność kompilatora oprogramowania lub procesora kodu źródłowego do uwzględnienia lub ignorowania niektórych poleceń lub bloków kodu w oparciu o instrukcje specyficzne dla języka, które nie są technicznie częścią specyfikacji języka podstawowego programowania.Polecenia używane do wyzwalania kompilacji warunkowej w programie często nazywane są dyrektywami przed procesorami, 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, dyrektywy warunkowe mogą być zmiennymi lub makrami zdefiniowanymi przez użytkownika, lub mogą być również zmiennymi systemowymi ustalonymi przez kompilator lub system operacyjny.Kompilacja warunkowa jest często używana do konfigurowania pojedynczego zestawu plików kodu źródłowego, aby można je było skompilować w różnych środowiskach lub systemach operacyjnych bez konieczności zamierzenia lub zmiany plików źródłowych.Jeden język do drugiego, ale ogólnie są to makra lub inne wyrażenia meta-data poza zakresem normalnych zmiennych programu.W językach takich jak C zmienne zwykle są makrami odczytującymi przez przetwarzanie.Przez większość czasu makra nie są dostępne dla rzeczywistego kodu źródłowego programu wykonywalnego, nawet jeśli istnieją w tych samych plikach źródłowych.

Dyrektywy używane do testowania zdefiniowanych zmiennych warunkowych są podstawowe i są zgodne-Ten oświadczenie.Podstawowe testy, które można przeprowadzić dla kompilacji warunkowej, to to, czy wartość jest zdefiniowana, a nie zdefiniowana, czy w niektórych przypadkach, czy dwie zdefiniowane zmienne są równoważne.Same zmienne lub makra ogólnie nie mają żadnej wartości istotności, ponieważ akt ich zdefiniowania jest tym, na co sprawdzają dyrektywy.Jednak z niektórymi językami i kompilatorami wartość zdefiniowanej zmiennej może mieć znaczenie, jeśli są one oceniane dla stanu logicznego.

Gdy kompilator napotyka dyrektywy używane do kompilacji warunkowej, dyrektywy są oceniane, czy testują one jako prawdziwe, czy fałszywe.Jeśli prawda, kod przestrzegający dyrektywy jest kompilowany jako normalny;W przeciwnym razie kompilator całkowicie pominie kod zawarty w dyrektywie.Jest to inaczej niż warunkowe instrukcje logiczne w samym kodzie programu wykonywalnego, ponieważ nawet jeśli logika ma blok kodu, którego nie można wykonać, nadal będzie interpretowana i skompilowana w większości przypadków.Dzięki warunkowym dyrektywom przedprocesowym kod pominiętego nigdy nie jest uwzględniony, interpretowany ani skompilowany.Należy również zauważyć, że po oceny wszystkich zmiennych i dyrektyw warunkowych nie są one skompilowane z resztą programu, ponieważ mają one jedynie zapewnić kierunek kompilatorowi.

Kompilacja warunkowa najczęściej jestużywany do uwzględnienia lub wykluczenia kodu specyficznego dla określonego systemu operacyjnego lub środowiska.Oznacza to, że biblioteki, które istnieją w jednym systemie operacyjnym, mogą być warunkowo uwzględnione, jeśli dyrektywy określają, że program jest kompilowany w ramach tego systemu operacyjnego.Alternatywnie dyrektywy mogą być również używane do uwzględnienia lub wykluczenia kodu opartego na zmiennych zdefiniowanych przez użytkownika.Można to zrobić, aby debugowanie lub profilowanie kodu nie jest zawarte w końcowej wersji programu, a przynajmniej niektóre funkcje mogą być włączone lub wyłączone bez konieczności utrzymywania osobnych kopii kodu.