Pomocφ direktivy define
lze definovat makra, tedy specifikovat, ₧e se v programu mß urΦit² identifikßtor nahrazovat jin²mi symboly. Direktiva ve tvaru:
#define ident rozvoj_makra
zp∙sobφ, ₧e od tohoto mφsta v programu se vÜechny v²skyty identifikßtoru ident nahradφ rozvojem makra, co₧ je posloupnost libovoln²ch symbol∙.
Definovat lze takΘ makro s parametry ve tvaru:
#define ident(par1, par2, ...) rozvoj_makra
V tomto p°φpad∞ se makro volß s parametry takto:
ident(sp1, sp2, ...)
a toto volßnφ se nahradφ rozvojem makra, v n∞m₧ se ka₧d² v²skyt par1 nahradφ sp1, v²skyt par2 nahradφ sp2 atd. P°i volßnφ makra je nutno uvΘst stejn² poΦet parametr∙, jako v definici makra.
V makrech se nerozliÜuje mezi velk²mi a mal²mi pφsmeny. Makra bez parametr∙ se pou₧φvajφ zejmΘna p°φ °φzenφ podmφn∞nΘho p°ekladu. Pro oznaΦovßnφ konstantnφch hodnot je vhodn∞jÜφ pou₧φvat mφsto nich deklarace konstant. Makra s parametry zjednoduÜujφ zßpis opakujφcφch se programov²ch konstrukcφ.
Definici makra lze kdykoli zm∞nit tak, ₧e se pou₧ije novß direktiva #define
pro stejn² identifikßtor. Definici lze zruÜit pomocφ direktivy:
#undef ident
P°φklad:
Budi₧ definovßno makro:
#define CHYBA(text) begin Info_box("Nastala chyba", text); halt end
Pokud v textu programu pou₧ijete zßpis:
if i<0 then CHYBA("Nep°φpustnß vstupnφ hodnota");
p°elo₧φ se jako zßpis:
if i<0 then begin Info_box("Nastala chyba", "Nep°φpustnß vstupnφ hodnota"); halt end;
P°eddefinovanß makra
Ve vnit°nφm programovacφm jazyce jsou p°eddefinovßna tato makra:
_WINBASE602_
- hodnotou je °et∞zec obsahujφcφ Φφslo verze klienta WinBase602, v souΦasnΘ verzi je to "6.0". Ve d°φv∞jÜφch verzφch nenφ makro pou₧itelnΘ, nelze tedy rozliÜovat verze ni₧Üφ ne₧ 6.0! V budoucφch verzφch vÜak bude mo₧nΘ pomocφ tΘto direktivy p°eklßdat program pro r∙znΘ verze WinBase602.
_LANGUAGE
_ - hodnotou je °et∞zec znak∙ obsahujφcφ nßzev zvolenΘho jazyka (jak jste si zvolili); pokud aplikace nenφ vφcejazyΦnß nebo pokud nenφ zvolen ₧ßdn² jazyk, pak je to prßzdn² °et∞zec
P°φklad:
#if _LANGUAGE_ = "english"
PrepocetNaPalce;
#elif _LANGUAGE_ = "cestina"
PrepocetNaMetry;
#endif
Viz takΘ: | KompilaΦnφ direktivy a makra |