Makro (software): Porovnání verzí

Přidáno 257 bajtů ,  před 10 lety
(přidáno PHP)
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ód|zdrojové kódy]]. Ovšem jako se [[Zdrojový kód|zdrojovými kódy]] se s nimi pracuje až po zpracování [[Preprocesor|preprocesoru]]. Například v [[Linux|Linuxu]] lze spustit [[preprocesor]] příkazem cpp (C Pre Processor). Funguje to tak, že se při každém výskytu identifikátoru makra ve zdrojovém kódu nahradí textem makra.
 
[[Preprocesor]] si zavolá [[překladač]] sám, takže o tom ani nemusíte vědět. [[Preprocesor]] odstraní ze zdrojového kódu komentáře a nahradí makra, které jsou ve zdrojovém kódu. Například když zapíšete do [[Zdrojový kód|zdrojového kódu]] #include <stdio.h>, pak [[preprocesor]] vloží na místo tohoto řádku obsah standardní [[Knihovna (programování)|knihovny]] <stdio.h>. Všechny direktivy [[Preprocesor|preprocesoru]] začínají znakem #.
 
Direktiva [[Preprocesor|preprocesoru]] musí být vždy první na novém řádku. Před ní mohou být maximálně jen „bílé znaky“ ([[tabulátor]], mezera, …). Direktiva končí s koncem řádku. Pokud chcete pokračovat na novém řádku, pak před „konec řádku“ napište zpětné lomítko.
 
Podle normy [[American National Standards Institute|ANSI]] C existují následující makra, které musí každý [[preprocesor]] jazyka C znát. Standardní makra [[Preprocesor|preprocesoru]] začínají a končí dvěma podtržítky.
{| class="wikitable" style="text-align: center; width: 500px; height: 200px;"
|+ makra, která musí každý preprocesor znát.
|}
 
Existují i implementačně závislá makra, která jsou definována jen na některých OS a v některých [[Preprocesor|preprocesorech]] jazyka C. Například makro __linux__ se může hodit ke zjištění, zda program překládáme v [[linux|linuxu]].
{| class="wikitable" style="text-align: center; width: 500px; height: 200px;"
|+ implementačně závislá makra.
Neregistrovaný uživatel