next up previous contents
Elõre: Függvények tárolási osztályai Fel: Tárolási osztályokhatáskörök Vissza: Tárolási osztályokhatáskörök

Modulok, blokkok.

Mint láttuk, a C programok több, külön fordítható modulból épülhetnek fel. Jogosan merül fel a kérdés, hogy az egyik modulban definiált tárolási egységre tudunk-e hivatkozni egy másik modulból, másrészt kíváncsiak lehetünk arra is, hogy milyen a program egyes részeinek hierarchiája, "elrejthetünk-e" változókat más modulok elõl, stb. Ahhoz, hogy ezekre a kérdésekre válaszolni tudjunk, tovább kell boncolgatnunk a C programok szerkezetét. Említettük, hogy a modulokban vannak kódgeneráló egységek, a függvények. Minden függvény törzse egy blokkból áll, amelyen belül újabb blokkokat alakíthatunk ki. (A blokk más elnevezése: összetett utasítás). A blokkszerkezet tehát a modulszerkezettel ellentétben hierarchikus, hiszen minden blokknak lehet alblokkja, és minden alblokk alá van rendelve az õt magában foglaló blokknak, míg a modulok azonos

hierarchiaszinten vannak, tehát egymás mellé vannak rendelve. Minden blokk két részre osztható: deklarációkra és adatdefiníciókra, valamint végrehajtható utasításokra (ez utóbbiak tartalmazhatják az alblokkokat). Egy blokk két része közül a deklarációs/definiciós rész el is maradhat. Mivel blokk belsejében nem lehet függvénydefiníció, ezért a C nyelvben minden kódgeneráló tárolási egység azonos hierarchia-szintû (mint a modulok). Természetesen a függvények között van egy logikai függõségi rendszer, hiszen a függvények egymást adott szisztéma szerint hívják (például ha egy fv1 hív egy fv2-t, akkor ritkán fordul elõ, hogy fv2 is hívja fv1-et). Logikailag mindig van egy vezetõ függvény, amelyik a program indulásakor legelsõként kapja meg a vezérlést. A C, illetve C++ nyelvben ennek a vezetõ függvénynek a neve kötelezõen a main (lásd a 1.11-es részt).