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 technicznie nie są częścią podstawowej specyfikacji języka 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 wymiany lub zmiany plików źródłowych.
Warunkowe definiuje się do testowania dla warunkowego kompleksuOselowanie może się różnić w zależności od języka, 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, nawet jeśli istnieją w tych samych plikach źródłowych.
Dyrektywy używane do testowania zdefiniowanych zmiennych warunkowych są szczątkowe i podążają za tą samą logiką co instrukcja IF-Then. 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 tWartość 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, aby sprawdzić, czy testują 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 kompilowane z resztą programu, ponieważ mają one jedynie zapewnić kierunek kompilatorowi.
Najczęściej stosuje się kompilacja warunkowa to Uwzględnij lub wyklucz kod, który jest specyficzny 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.