NHF segédlet: több modulos program

Czirkos Zoltán · 2017.07.13.

Lépésről lépésre útmutató több modulos programok létrehozásához a CodeBlocks fejlesztőkörnyezetben.

Az előadáson volt szó róla, miért szoktuk több forrásfájlra, azaz modulra bontani a programjainkat.

Példaként induljunk ki az alábbi mini-projektből! Tegyük fel, hogy a kód main.c néven van elmentve:

main.c
#include <stdio.h>

void hello(char const *ki) {
    printf("Hello, %s!\n", ki);
}

int main(void) {
    hello("vilag");
}

Ezt szeretnénk két forrásfájlra bontani, a main.c-re és a modul.c-re, amelyek a main(), illetve a hello() függvényt tartalmazzák.

Forrásfájlt és fejlécfájlt a Code::Blocks-ban az alábbi lépésekkel lehet hozzáadni a projekthez.

Aktív projekt kiválasztása

Válaszd ki aktívnak a projektedet, ha esetleg több projekt van nyitva. Ehhez a projekt nevére kattints a jobb gombbal, és a menüből Activate project.

Fájlok hozzáadása

A fenti menüből File, New, File pontot kell kiválasztani, a fájl típusának pedig a C/C++ source-t (forrásfájlhoz) vagy a C/C++ header-t. A nyelv legyen C. A következő ablakban be kell állítani a fájl elérési útját és nevét. Ez lehet például modul.c (modul.h), de a programodban nevezd el ezeket szerepük, tartalmuk szerint!

Ugyanabba a mappába kell őket tenni, mint a projekt többi fájljának a helye. Jelezni kell azt is, hogy az ebből a forrásfájlból keletkező tárgykódot a futtatható .exe-hez kell majd linkelni, ezért be kell pipálni az „Add file to active project in build targets” résznél mindent:

Fejlécfájl esetén a Code::Blocks automatikusan létrehozza az ún. include guard-okat, amelyek a többszörös beillesztés ellen védenek. (Ettől függetlenül ilyet tudni kell írni ZH-n.)

A kódrészletek átrendezése

A hello() függvény új helye a hello.c forrásfájl lesz. Így azt a függvényt át kell tenni a hello.c-be:

void hello(char const *ki) {
    printf("Hello, %s!\n", ki);
}

A függvény deklarációja a hello.h-ba megy:

void hello(char const *ki);

Ha lennének olyan típusdefiníciók, amelyeket mindkét modul használ, akkor azokat is a fejlécfájlba kellene tenni, ahogyan az előadáson is szerepelt.

A main.c-ben pedig csak a főprogram marad:

#include <stdio.h>

int main(void) {
    hello("vilag");
}

A fejlécfájlok beillesztése

A main.c-ben és a modul.c-ben is be kell illeszteni ezt a fejlécfájlt. Ezt tedd is meg:

#include "modul.h"

Így mindkét forrásfájl lefordításakor látja a fordító a függvény deklarációját.

Ezzel a kettő modulra bontás kész – ha több modul lenne, azoknál ugyanígy kell csinálni. Ne feledd, hogy a CodeBlocks projekt fájl nem tartalmaz forráskódot, hanem csak a CodeBlocks beállításait!