Next Previous Contents

3.6 Preprocesor cpp

Motivace

Preprocesor cpp byl použit z několika důvodů.

Hlavním důvodem je možnost vkládat soubory. Tím je umožněno rozdělit scénář na nezávislé části. Díky této modularitě jde lehce psát více různých scénářů pro stejnou fontánu, různé ``střihy'' téhož scénáře, nebo např. různá osvětlení téže ``choreografie''.

Dalším důvodem je možnost vytváření maker. To by se dalo využít například při spojení s hudbou tak, že bychom si ve zvláštním souboru definovali počátky zajímavých míst. Pro různé scénáře na stejnou hudbu bychom si pak nemuseli pamatovat čísla.

V neposlední řadě je to podmíněný překlad. To je vhodné například při ladění pouze částí scénáře. Zbytek scénáře může být dočasně vynechán.

Mimo jiné to byla i ``konstruktivní lenost'', neboli: ``Proč něco implementovat po tisícáté prvé, když je to již tisíckrát napsáno a lépe.''

Stučný popis

Jazyk makroprocesoru zajisté ovládá každý programátor v jazyce C či C++. Nicméně zajisté neuškodí stručný přehled.

Makroprocesor projíždí vstup a v podstatě jej kopíruje (trochu upravený) na výstup. Úprava spočívá v expadnování maker.

Chod makroprocesoru se dá řídit pomocí tzv. direktiv. Direktiva začíná vždy na novém řádku znakem `#'.

Popis jednotlivých direktiv

#define MAKRO HODNOTA_MAKRA

po tomto každý výskyt slova MAKRO bude nahrazen řetězcem HODNOTA_MAKRA. Například pokud definujeme

#define pes nejlepší přítel člověka

pak text

pes štěkal na pestrý koberec.

bude vyexpandováno následovně:

nejlepší přítel člověka štěkal na pestrý koberec.

Všiměte si, že pes ve slově pestrý nebylo expandováno.

#define pes(x) nejlepší přítel x

definování makra s parametrem. Text

pes(člověka) není pes(kočky).

bude vyexpandováno na

nejlepší přítel člověka není nejlepší přítel kočky.

#include "soubor"

na tomto místě bude vložen soubor soubor. Tento soubor taktéž projde makroprocesorem.

#ifdef PROMĚNNÁ

#endif

Pokud je deklarované makro PROMĚNNÁ, provede se makroproces i na blok končící endif. V opačném případě bude tento blok vynechán. Tyto direktivy lze vnořovat.

Makro procesor cpp má daleko více vlastností. Pro náš účel tento popis však stačí. Zájemci nechť se obrátí na info cpp, kde je velmi podrobný popis.


Next Previous Contents