Makro (software): Porovnání verzí

Smazaný obsah Přidaný obsah
Řádek 6:
== Programování ==
V programovacích jazycích ([[C (programovací jazyk)|jazyk C]] nebo [[C++]]) jsou makra nepostradatelnou pomůckou, která je implementována na úrovni [[Preprocesor jazyka C|preprocesoru jazyka C]] (cpp). Makra slouží k definování symbolů využitelných při podmíněném překladu, ale i k definování komplikovaných sekvencí, které jsou následně volány v zápisu [[Zdrojový kód|zdrojového kódu]]. Výhodou maker je, že jejich předefinováním se při překladu zdrojového kódu automaticky zamění všechny jejich výskyty, což minimalizuje chyby, které by přinesly mnohanásobné editace kódu.<ref>{{Citace periodika | příjmení = Greenwald | jméno = Irwin D. | coauthors = Maureen Kane | titul = The Share 709 System: Programming and Modification | periodikum = Journal of the ACM | ročník = 6 | číslo = 2 | strany = 128–133 | vydavatel = ACM | místo = New York, NY, USA | datum vydání = April 1959 | url = http://doi.acm.org/10.1145/320964.320967 | formát = [[PDF]] | doi = 10.1145/320964.320967 <!--Retrieved from URL by DOI bot-->}} Quotation: "One of the important uses of programmer macros is to save time and clerical-type errors in writing sequence of instructions which are often repeated in the course of a program."</ref><ref>{{Citace periodika | příjmení = Strachey | jméno = Christopher | titul = A General Purpose Macrogenerator| periodikum = Computer Journal| ročník = 8 | číslo = 3 | strany = 225–241| datum=October 1965 | doi = 10.1093/comjnl/8.3.225}}</ref>
 
Makra jsou texty, které se dají představit jako zdrojové kódy. Ovšem jako se zdrojovými kódy se s nimi pracuje až po zpracování preprocesoru. Funguje to tak, že se při každém výskytu identifikátoru makra ve zdrojovém kódu nahradí textem makra. Pro definici makra se používá direktiva #define
Existují dva typy maker:
1. makra bez parametrů
2. makra s parametry
 
====Makra bez parametrů====
Používají se pro definici konstant, kdy se místo konstanty používá nějaké specifické slovo. Používané pravidlo v tomto případě je psát identifikátor makra bez parametru velkými písmeny.
Zápis takového makra pak vypadá:
#define identifikator_makra text_vlozeneho_makra
Volání takového makra pak vypadá:
Identifikator_makra
 
====Makra s parametry====
Obsahují formální parametry, se kterými se v textu makra dále pracuje. Často se používají namísto funkcí. Rozdíl mezi makry a funkcí je ten, že makra jsou rychlejší a za formální parametry mohou být načteny i hodnoty libovolných datových typů. Používané pravidlo je psát identifikátor malými písmeny.
Zápis takového makra pak vypadá:
#define identifikátor_makra(seznam formálních parametru) text_vlozeneho_makra
Volání takového makra pak vypadá:
identifikátor_makra(seznam skutečných parametrů)
 
Některé jazyky, jako třeba [[PHP|PHP]], mohou být vloženy do libovolného textového formátu, nebo zdrojových kódů jiných jazyků. Mechanismus, kterým se rozpozná kód jazyka (např. v již zmíněném php: <?php a ?>) je podobný jako textové makro jazyka. Ale existují mnohem silnější plnohodnotné jazyky.