Preprocesor jazyka C: Porovnání verzí

Smazaný obsah Přidaný obsah
Xchaos (diskuse | příspěvky)
m →‎Ustálené zvyklosti: oprava skloňování + Existuje nezávazná konvence využití dostupného názvového prostoru ...
Xchaos (diskuse | příspěvky)
m →‎Definice a expanze maker: přeformulování, sorry (Náhled používám, ale občas .. .že ano)
Řádek 47:
 
==Definice a expanze maker ==
Používají se dva základní typy definice maker. Jednak lze definovat makra bez parametru, která expandují vždy do stejné sekvence znaků (resp. tokenů), jednak lze definovat makra s parametry, které se z praktického hlediska chovají podobně jako [[Funkce (programování)|funkce]]. Obecná syntaxe direktivy <code>#define</code> je:
 
<source lang="c">
Řádek 82:
c=2+2*5+5
</source>
Výsledek není tedy mylně očekávaných 40 ale 17. Takové chybě se dá v tomto konkrétním případě zabránit uzavřením matematického výrazu do závorek (vizpodobně ukázkovéjako makrou ukázkového makra RADTODEG(x) výšev předchozím příkladu). Obecným ařešením obecněje nepoužívánímnepoužívání nadměrně komplikovaných maker. V tomto konkrétním případě stačí dané makro přespat jako
<source lang="c">
#define NASOBEK(a,b) ((a)*(b))
</source>