next up previous contents
Elõre: Szimbólumok és makrók Fel: C programozás a BORLAND Vissza: A mutató típusok

Az elõfeldolgozó

Minden C(++) fordítóprogram szerves részét képezi egy ún. elõfeldolgozó (preprocesszor). A fordítóprogram és a preprocesszor kapcsolatát úgy kell elképzelni, hogy a tulajdonképpeni fordító nem is látja a forrásszöveget, hanem csak azt, amit ebbõl az elõfeldolgozó készít a számára. Ezt a 1.1. ábrán látható módon képzelhetjük el. Jellemzõ az ábrán látható együttmûködésre, hogy a belsõ fordító nem ismeri a megjegyzések szintaxisát, ugyanis nincs rá szüksége: a neki átadott sorokból az elõfeldolgozó azokat "kiírtja". A BORLAND C++ integrált fejesztõi rendszerénél a két rész kapcsolata olyan szoros, hogy nincs is lehetõség az elõfeldolgozó kimenetének a megtekintésére. Ehhez egy külön segédprogramot (CPP utility) találunk a programcsomagban. Ez szolgál arra, hogy a forrásszövegbõl elõállítsa az elõfeldolgozó kimenetét egy .i kiterjesztésû file-ba, így láthatóvá téve, hogy ténylegesen mi kerül át a belsõ fordítónak.

  
1.1 ábra: Az elõfeldolgozó kapcsolata a környezettel

Az elõfeldolgozó egy sororientált szövegfeldolgozó (más szóval makrónyelv), ami semmit sem "tud" a C nyelvrõl. Ez két fontos következménnyel jár: az elõfeldolgozónak szóló utasításokat nem írhatjuk olyan kötetlen formában, mint az egyéb C utasításokat (tehát egy sorba csak egy utasítás kerülhet és a parancsok nem lóghatnak át másik sorba, hacsak nem jelöljük ki folytatósornak); másrészt minden, amit az elõfeldolgozó mûvel, szigorúan csak szövegmanipuláció, függetlenül attól, hogy C nyelvi alapszavakon, kifejezéseken vagy változókon dolgozik. A preprocesszornak szóló parancsokat a sor elején (esetleg szóközök és/vagy tabulátorok után) álló # karakter jelzi.