User Manual

75
4.4.11. Preprocesor jazyka C
V této kapitole stručně probereme preprocesor jazyka C, který se již používal v předchozích
ukázkových programech na řádku: #include "RP6RobotBaseLib.h"!
Preprocesor vyhodno tento příkaz ještě před spuštěním kompilačního procesu GCC.
Příkazová řádka #include "file" vloží obsah specifikovaného souboru do vkládaného
místa. Náš ukázko program vloží soubor RP6BaseLibrary.h, který poskytuje definice všech
uživatelsky dostupných funkcí a řídí zpracování překladu. Možnosti preprocesoru mají ak
několik dalších voleb a umňují definici konstant (které mohou obshovat pev hodnoty
systému):
#define THIS_IS_A_CONSTANT 123
Tento raz definuje textovou konstantu THIS_IS_A_CONSTANT s hodnotou 123.
Preprocesor jednoduše nahradí echny odkazy definovanou hodnotou. Konstanty mohou být
chápány jako náhrada textu! V sledujícím výrazu:
writeInteger(THIS_IS_A_CONSTANT,DEC);
bude THIS_IS_A_CONSTANT nahrazen hodnotou 123 a shodně:
writeInteger(123,DEC);
(mimochodem: parametr DEC ve funkci writeInteger je jen další konstanta v tomto případě
definiční konstanta číselného základu hodnoty 10 pro desítkočíselný systém).
Preprocesor také ovládá jednoduc podmínky if:
Texto výstup se vytvoří pouze při definici DEBUG (nemusíte do ní přiřazovat hodnotu
stačí jednoduše definovat DEBUG). To je užitečné při aktivaci několika textových výstupů pro
ladění během vývoje programu, zatímco při normálním překladu můžete odstranit echny
pomoc textové výstupy úpravou jediné řádky. Bez definice DEBUG v předchozím ukázkovém
programu zabrání preprocesor průchodu obsahu programového řádku 7 do kompilátoru.
Knihovna RP6Library také nabízí makra, které se definují pomocí razu #define. Makra
umňují zpracování parametrů podobně jako funkce. Následující příklad ukazuje typickou
definici makra:
#define setStopwatch1(VALUE) stopwatches.watch1 = (VALUE)
Tato definice vám umňuje volat makro stejně jako normální funkci (tj.
setStopwatch1(100);).
Důležitý detail: za definicemi preprocesoru se obvykle nevkládá středník!