A fordítási direktívák a Turbo PASCAL-ban

Fordító direktívák: A fordítóprogramnak adott speciális utasítások, amelyekkel a fordítás körülményeit és a keletkező lefordított program tulajdonságait megváltoztathatjuk.

A direktívák csoportosítása:
– Kapcsoló direktívák: csak két állapotuk lehet, aktív és passzív, ezt a direktíva neve után tett ‘+’ ill. ‘-‘ jellel tüntetjük fel. Szintaxisuk a következô: a direktívákat kapcsos zárójelbe tesszük, de megkülönböztetésül a kommentektől a nyitó zárójel ‘{‘ után dollár jel ‘$’jelzi, hogy ez direktíva. Ezután a direktíva neve, majd az állapotot jelzô ‘+’ vagy ‘-‘ jel következik. Például: {$I+} vagy {$B-}. Egymás után több direktívát is felsorolhatunk, mint például: {$I+,B-,N+}. A kapcsoló direktívák globálisak vagy lokálisak lehetnek:

– Globális kapcsoló direktívák: az általuk definiált tulajdonságok az egész program vagy unit területére érvényesek. Közvetlenül a programfej vagy unitfej után kell elhelyeznünk ôket; hatásuk a program, ill. unit egészére vonatkozik.
(Globális direktívák: A, D, E, L, M, O)

– Lokális kapcsoló direktívák: e direktívákat bárhol elhelyezhetjük a program és a unit területén, sôt, hatásukat bármikor módosíthatjuk.
(Lokális direktívák: B, F, I, R, S, V)

– Paraméteres direktívák: a direktíva neve után paraméterek következnek, például memóriaméret vagy egy filenév, ez esetben a direktíva és a paraméterek együttesen specifikálják az utasítást a fordítónak. Szintaxisuk:
{$ <direktívanév> <paraméter_1>…<,paraméter_n>}.
(Paraméteres direktívák : I, L, M, O )

– Feltételes direktívák: a fordítás menetét specifikálják. E direktívákkal elérhetô, hogy a fordítás a forrásfájlnak csak egy, valamely feltétel kiértékelésétôl függô, részére terjedjen ki. Két szerkezetet használhatunk:
{$IFxxx feltétel}


{$ENDIF} , vagy

{$IFxxx feltétel}


{$ELSE}


{$ENDIF}

(Feltételes direktívák: IFDEF, IFNDEF, IFOPT, DEFINE, UNDEFINE. A feltételes direktívák nem tartoznak szorosan a tananyaghoz, ezért elég csak megemlíteni ôket)

Fordítási direktívák

‘B’ direktíva: logikai kifejezés kiértekelése. Lokális kapcsoló direktíva, alapértelmezése passzív. Aktív állapotban a logikai kifejezések kiértekelése teljes mértékben, passzív állapotban csak a végeredmény egyértelművé válásáig történik. Az aktív állapot beállítása tesztelésnél célszerű, de a már tesztelt programban a gyorsabb futás érdekében célszerű kikapcsolni.
‘E’ direktíva: aritmetikai processzor emulálása. Globális kapcsoló direktíva, alapértelmezése aktív. Aktív állapotban a numerikus processzor emulálásra kerül, hiszen co-processzor hiányában csak így használhatjuk a real típustól különbözô valós típusokat (single, extended, double, comp). Az ‘E’ direktíva aktív állapotának előfeltétele az ‘N’ direktíva bekapcsolása. Tehát ha nincs matematikai társprocesszor, és használni szeretnénk a kiterjesztett valós típusokat akkor az ‘E’ és az ‘N’ direktívát is be kell kapcsolnunk, ha van akkor az ‘E’ direktívát kapcsoljuk ki.
‘I’ direktíva mint I/O ellenőrzés. Lokális kapcsolódirektíva, alapértelmezése aktív. Aktív állapota mellett input-output hiba esetén a program futása megszakad, és a vezérlés visszakerül az operációs rendszerhez. Passzív állapot esetén az IORESULT függvény segítségével kezelhetjük az I/O hibákat. Hiba esetén nem áll le a program futása, de minden I/O művelet felfüggesztôdik az IORESULT meghívásáig. A függvényt meghívva megkapjuk a hibára jellemzô hibakódot.
‘I’ direktíva mint include-file beszerkesztése. Segítségével include (beszúrt) fájlokat szerkeszthetünk be a forrásprogramunkba. Az include fájlok forrásnyelvű programrészletek, melyek a fordítás alatt a programunkhoz szerkesztôdnek. Használata: {$I <fájlnév>}. A kiterjesztés alapértelmezése .PAS, hiánya esetén a rendszer ezt feltételezi. E direktíva nem állhat ‘BEGIN’ és ‘END’ között, maximálisan 15 include-file ágyazható egymásba.
‘N’ direktíva: numerikus processzorhoz. Globális kapcsoló direktíva, alapértelmezése passzív. Passzív állapotban csak a real valós típust használhatjuk. Ha a kiterjesztett valós típusokat akarjuk használni, akkor kapcsoljuk be, és az ‘E’ direktíva állapotától függôen, vagy a co-processzor fog működni, vagy pedig csak annak emulálására kerül sor.
‘R’ direktíva: érvényességi tartomány ellenôrzése. Lokális kapcsoló direktíva, alapértelmezése passzív. Aktív állapotban futás közben ellenôrzésre kerül az indexek érvényességi, illetve a skaláris és résztartomány típusok értelmezési tartománya. Túlcsordulás esetén a program futása hibaüzenettel megszakad. Az aktív állapot beállítása tesztelésnél célszerű, de a már tesztelt programban a gyorsabb futás érdekében célszerű kikapcsolni.