Práce s makry
Napište programový modul skládající se ze souborů „makra.c“ a „makra.h“, kde budou realizována makra pro určení minimální hodnoty ze tří prvků. Demonstrační program (s funkcí main) koncipujte tak, aby při zvolení modu ladění (pomocí define podmíněného překladu) vypisoval hodnoty, jinak aby nevypisoval nic. Makro min (s funkčním voláním) musí být použitelné v následujících situacích (tuto část vložte do funkce main)
min(1,2,1);
min (PI,1.3,4);
min (2+2,3,1) ;
3*min(2.2,4.5,10)*7;
if (min(2,3,1)>2) a = min(2,3,1); else b = min(2,c,2PI);
Upřesnění zadání:
Pro demonstraci činnosti a použití maker napište druhý modul (s funkcí main, se jménem „hlavni.c“).
Napište a vyzkoušejte si makro pro zjednodušení zápisu (konstantní) proměnné PI a 2PI (která využije definice PI). Konstantu PI zadejte na 5 desetinných míst. Následně ukažte použití těchto konstant ve funkcích pro výpočet maxima (viz výše).
Napište makro (s parametry, umožňující „funkční“ volání) min, pro zjištění maximální hodnoty ze tří čísel, tak aby fungovalo jako funkce. (Spíše než if použijte ternární operátor).
Vyzkoušejte si makro pro řízený (podmíněný) překlad. Nadefinujte symbol TEST. V případě, že bude TEST nadefinován, bude main zobrazovat/tisknout na konzolu trojici vstupních hodnot a hodnotu výslednou. V případě, že TEST nebude aktivní, k tisku nedojde .
(Do projektu neuvádějte, ale zkuste si ozřejmit, jaký je rozdíl mezi makrem a funkcí v oblasti realizace a použití. Jaký rozdíl je mezi interpretací ze strany překladače, zkuste změnit makra na funkce a uvědomte si změnu).
Pozn.: Zvolený název funkce max,min nemusí být ideální pro některou kombinaci načítaných systémových hlavičkových souborů. Název max, min je zvolen špatně z toho důvodu, že je to jméno často používané, a je používáno i v systémových knihovnách. Toto vícenásobné použití může vést ke kolizím mezi názvy. V tom případě je lepší název (vámi vytvářené) funkce zvolit jinak (například maxi, minim ...).
Poslední úpravy 2010-09-24