16. cvičení
Modularizace
Ukázali jsme si, jak rozdělit zdrojový kód do několika zdrojových souborů
(.c) a jak je propojit pomocí hlavičkových souborů (.h). Ve vývojovém
prostředí pro Windows je potřeba naklikat tzv. projekt a v něm vytvořit
jednotlivé zdrojové a hlavičkové soubory.
- Zdrojové soubory obsahují definice funkcí, struktur apod., stejně jako dosud.
  S ohledem na spojení zdrojových souborů do jednoho programu je třeba zajistit,
  aby každá funkce byla definována právě jednou, speciálně funkce mainmůže být definována pouze v jednom zdrojovém souboru.
- Hlavičkové soubory obsahují pouze tzv. deklarace a ne definice funkcí. Slouží k tomu, aby překladač věděl, jaké funkce jsou definovány v ostatních zdrojových souborech.
Překlad programu rozděleného do několika zdrojových souborů probíhá v několika fázích:
- Každý zdrojový soubor (.c) se přeloží na binární soubor (.o) obsahující binární kód pro všechny funkce definované v daném zdrojovém souboru.
- Všechny binární soubory .ose spojí, neboli slinkují do výsledného spustitelného souboru. Při linkování probíhá kontrola, všechny použité funkce jsou definovány právě jednou, a že existuje funkcemain. Při linkování je možné připojit i tzv. knihovny obsahující dodatečné funkce. Linkování standardní knihovny obsahující funkce jako např.printfprobíhá implicitně.
Poznámka: Ve Windows nesmí být projekt uložen na síťovém disku, protože
terminál ve Windows (CMD.EXE) neumí pracovat s tzv. UNC cestami a defaultně
přejde do adresáře C:\WINDOWS\, kde naše zdrojáky pochopitelně nejsou. Pokud
si zdrojové soubory ukládáte na flash disk apod., dejte si také pozor na to,
jestli má disk vždy stejné písmenko.
Poznámka: Ve Windows cesta k adresáři s projektem nesmí obsahovat znaky mimo ASCII tabulku (např. znaky s diakritikou), jinak překlad projektu nebude fungovat.
Želví grafika
Kreslení obrázků pomocí želví grafiky.
Instalace knihovny SDL
Pro práci s grafikou použijeme knihovnu SDL, kterou je potřeba nainstalovat. Pro jednoduchost jsem připravil archivy pro Windows i pro Linux, které stačí rozbalit: viz adresář zelva.
V archivu pro Windows jsou adresáře i686-w64-mingw32 pro 32 bitový systém a
x86_64-w64-mingw32 pro 64 bitový systém, zkopírujte si příslušný adresář dle
vašeho systému a přejmenujte dle vlastní fantazie (např. ProjectZelva). Dále
je potřeba zkopírovat soubor SDL2.dll z podadresáře bin o úroveň výš, kde
budete vytvářet zdrojové soubory.
Zdrojové soubory
Z adresáře zelva si stáhněte zdrojové soubory zelva.h, zelva.c,
obrazek.c a uložte je do adresáře s knihovnou SDL (např. ProjectZelva). Pro
Linux si stáhněte také soubor Makefile a uložte ho tamtéž. V adresáři projektu
by tedy měly být tyto soubory a adresáře:
- bin/
- include/
- lib/
- Makefile(jen Linux)
- obrazek.c
- SDL2.dll(jen Windows)
- share/
- zelva.c
- zelva.h
Překlad zdrojových souborů
V Linuxu spusťte terminál, přejděte do adresáře se zdrojovými soubory a spusťte
příkaz make. Výsledný program se jmenuje obrazek.
Ve Windows vytvořte projekt v daném adresáři a přidejte do něj zdrojové soubory
zelva.h, zelva.c a obrazek.c. V nastavení projektu je potřeba naklikat
„include path“ (cesta k podadresáři include), „library path“ (cesta k
podadresáři lib) a „linker options“ (parametry -lSDL2 -lm). Takto vytvořený
projekt by měl jít zkompilovat a spustit (pokud jste zkopírovali soubor
SDL2.dll).