Skip to main content

Co je podmíněná kompilace?

V počítačovém programování popisuje podmíněná kompilace schopnost kompilátoru softwaru nebo procesoru zdrojového kódu zahrnout nebo ignorovat určité příkazy nebo bloky kódu založené na jazykově specifických pokynech, které nejsou technicky součástí jádrového programovacího jazyka.Příkazy, které se používají ke spuštění podmíněné kompilace v programu, se často nazývají pre-procesorové směrnice, ačkoli jsou také známé jako směrnice kompilátoru, podmíněné komentáře nebo podmíněné definice.V závislosti na použitém kompilátoru nebo jazyku mohou být podmíněné směrnice být uživatelsky definované proměnné nebo makra, nebo by to mohly být také systémové proměnné nastavené kompilátorem nebo operačním systémem.Podmíněná kompilace se často používá k konfiguraci jedné sady souborů zdrojového kódu, aby mohly být kompilovány v různých prostředích nebo operačních systémech, aniž by musely vyměňovat nebo měnit zdrojové soubory.Jeden jazyk k druhému, ale obvykle se jedná o makra nebo jiné meta-data výrazy mimo rozsah normálních proměnných programu.V jazycích, jako je C, jsou proměnné obvykle makra, která jsou čtena předprocesorem.Makra nejsou většinou přístupná skutečným spustitelným zdrojovým kódem programu, i když existují ve stejných zdrojových souborech.-Poté.Základní testy, které lze provést pro podmíněnou kompilaci, jsou to, zda je definována hodnota, není definována, nebo v některých případech, zda jsou dvě definované proměnné ekvivalentní.Samotné proměnné nebo makra obecně nemají žádnou hodnotu významnosti, protože akt jejich definování je to, co směrnice kontrolují.U některých jazyků a kompilátorů však může hodnota definované proměnné záležet na tom, zda jsou vyhodnoceny pro booleovský stav..Pokud je to pravda, kód, který sleduje směrnici, je kompilován jako normální;Jinak kompilátor zcela přeskočí kód obsažený ve směrnici.To je na rozdíl od podmíněných logických příkazů v samotném spustitelném programovém kódu, protože i když má logika blok kódu, který nelze provést, bude ve většině případů stále interpretován a kompilován.U podmíněných předprocesorových směrnic není přeskočený kód nikdy zahrnut, interpretován ani kompilován.Rovněž je třeba poznamenat, že jakmile předprocesor vyhodnotí všechny podmíněné proměnné a směrnice, nejsou sestaveny se zbytkem programu, protože jsou určeny pouze k tomu, aby kompilátoři poskytli směr.

Podmíněná kompilace je nejčastějislouží k zahrnutí nebo vyloučení kódu, který je specifický pro konkrétní operační systém nebo prostředí.To znamená, že knihovny, které existují v jednom operačním systému, mohou být podmíněny, pokud směrnice určují, že program je kompilován v tomto operačním systému.Alternativně lze směrnice také použít k zahrnutí nebo vyloučení kódu na základě uživatelsky definovaných proměnných.To lze provést, takže ladění nebo profilovací kód není zahrnut do konečné verze programu, nebo tak lze určité funkce povolit nebo deaktivovat, aniž by bylo nutné udržovat samostatné kopie kódu.