Több modul CodeBlocks-ban
Czirkos Zoltán · 2024.11.18.
Lépésről lépésre útmutató több modulos programok létrehozásához a CodeBlocks fejlesztőkörnyezetben.
Ha még előadáson nem volt szó róla, hogy miért szoktuk több forrásfájlra, azaz modulra bontani a programjainkat, akkor érdemes előbb a több modulra bontásról szóló írást elolvasni.
Példaként induljunk ki az alábbi mini-projektből! Tegyük fel, hogy a kód main.c
néven van elmentve:
#include <stdio.h>
void hello(char const *ki) {
printf("Hello, %s!\n", ki);
}
int main(void) {
hello("vilag");
return 0;
}
Ezt szeretnénk két forrásfájlra bontani, a main.c
-re és a hello.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
hello.c
(hello.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:
#include <stdio.h>
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>
#include "hello.h"
int main(void) {
hello("vilag");
return 0;
}
A fejlécfájlok beillesztése
A main.c
-ben és a hello.c
-ben is be kell illeszteni ezt a fejlécfájlt. Ezt tedd is meg:
#include "hello.h"
Így mindkét forrásfájl lefordításakor látja a fordító a függvény deklarációját.
Áttekintés
A projekt három fájlja így néz most ki:
#include "hello.h"
int main(void) {
hello("vilag");
return 0;
}
#ifndef HELLO_H_INCLUDED
#define HELLO_H_INCLUDED
void hello(char const *ki);
#endif
#include <stdio.h>
#include "hello.h"
void hello(char const *ki) {
printf("Hello, %s!\n", ki);
}
Ezzel a kettő modulra bontás kész – ha több modul lenne, azoknál ugyanígy kell csinálni. A nagy házi feltöltéséhez ezek a fájlok kellenek. Ne feledd, hogy a CodeBlocks projekt fájl nem tartalmaz forráskódot, hanem csak a CodeBlocks beállításait.