www.amapro.cz & David Bazala [Programování]

Otevře webové stránky AmaPro


Otevře hlavní stránku společnosti AmaPro
Internetové stránky určené pro studenty středních a vysokých odborných škol.


amapro.cz/odkazy Projekt eliminuje vyhledávání klíčových slov na komerčních stránkách a v e-schopech.



Nový projekt AmaPro

 

#ifdef

 

Je speciální příkaz C pro tzv. preprocesor, který je informací pro sestavování výsledného zdrojového souboru pro skutečnou kompilaci do strojového kódu. Touto direktivou vytváříme určité zóny v celkovém zdrojovém souboru, které máme možnost velmi rychle vyřadit z kompilace do výsledného exe souboru. Této možnosti se zpravidla využívá pro ladění programu. Vyřazením ladícího kódu docílíme rychlejšího a kratšího programu. Nemusíme se obávat, že při mazací euforii smažeme něco víc, než jen pomocné řádky. Tato volitelná zóna se musí vložit mezi příkazy preprocesoru takto:

 

 

#define MEZI_VYSL

zdrojový kód užitkového programu

#ifdef MEZI_VYSL

zdrojový kód ladících prostředků

#endif

zdrojový kód užitkového programu

 

 

Pomocí direktivy #define MEZI_VYSL na počátku zdrojového textu (tedy její existencí) lze určit zda bude kompilována jen užitková část nebo i část určená pro ladění. Název konstanty a její hodnota za #define není podstatná, nesmí ovšem obsahovat rezervované slovo NDEBUG.

 

PŘÍKLAD: #ifdef_1

 

int main(int argc, char* argv[])

{

#define MEZI_VYSL                          //definice existence konstanty MEZI_VYSL

int a,b,c,d;                                           //alokace čtyř int proměnných

a=2+2;                                                //matematický mezivýpočet

#ifdef MEZI_VYSL                            //počátek zóny volitelné kompilace

cout<<"a="<<a<<endl;                       //výstup mezivýsledku na obrazovku

#endif                                                  //konec zóny volitelné kompilace

b=3*3;                                                //matematický mezivýpočet

#ifdef MEZI_VYSL                            //počátek zóny volitelné kompilace

cout<<"b="<<b<<endl;                       //výstup mezivýsledku na obrazovku

#endif                                                  //konec zóny volitelné kompilace

c=a+b;                                                //matematický mezivýpočet

#ifdef MEZI_VYSL                            //počátek zóny volitelné kompilace

cout<<"c="<<c<<endl;                       //výstup mezivýsledku na obrazovku

#endif                                                  //konec zóny volitelné kompilace

d=a+b+c;                                            //matematický hlavní výpočet

cout<<d<<endl;                                  //výstup hlavního výpočtu na obrazovku

getchar();                                            //čekání na entr

return 0;                                              //výstup z konzolové aplikace

}

 

Teto program demonstruje příklad využití podmíněného překladu zdrojového textu, který provádí matematický výpočet. Pro jeho urychlení je vhodné zrušit kompilaci zobrazování mezivýsledků. Výpis jednotlivých mezivýsledků je uzavřen pomocí #ifdef a #endif do volitelné kompilace. Zda bude výsledný program zobrazovat mezivýsledky rozhoduje existence řádky #define MEZI_VYSL. Vyzkoušejte řádek zaremovat a přeložit. Výsledná kompilace volitelné zóny ignoruje a přeloží jen užitkový zdrojový kód.

 

PŘÍKLAD: #ifdef_2:

 

int main(int argc, char* argv[])

{

#define MEZI_VYSL                                                 //definice existence konstanty MEZI_VYSL

#define PROMENA 5                                                //definice makra PROMENA jako znak 5

cout<<"1. vzdy bude vypsano"<<endl;            //užitková část zdrojového programu

#if defined(MEZI_VYSL) && PROMENA== 2     //počátek zóny filtrované kompilace

cout<<"bude vypsano je-li PROMENA 2"<<endl;      //kód filtrované části kompilace

#endif                                                                         //konec zóny filtrované kompilace

cout<<"2. vzdy bude vypsano"<<endl;            //užitková část zdrojového programu

#if defined(MEZI_VYSL) && PROMENA== 5        //počátek zóny filtrované kompilace

cout<<"bude vypsano je-li PROMENA 5"<<endl;      //kód filtrované části kompilace

#endif                                                                         //konec zóny filtrované kompilace

cout<<"3. vzdy bude vypsano"<<endl;            //užitková část zdrojového programu

getchar();                                                                    //čekání na entr

return 0;                                                                      //výstup z konzolové aplikace

}

 

Tento program demonstruje rozšířené užití podmíněné kompilace na základě hodnoty proměnné (konstanty makra). Jsou definovaná dvě makra pomocí #define, kde jedna je bez rozvinutí a druhá se rozvíjí jako znak 5. Direktiva #if defined dovoluje kombinaci s dalšími logickými příkazy a vytvářet tak filtrované zóny pro kompilaci zdrojového textu. Makro (proměnná) PROMENA znak, určuje která část bude kompilována. Měňte znaky 2 a 5 a také vyzkoušejte zrušit #define MEZI_VYSL.

 

 



Abecední seznam všech článků Vyhledání pojmů ve článcích




Hybridní počítače
Počítače, jejichž základem je standardní analogová počítací síť.
knihy/hybridni_pocitace
Zapojení kabelů
Popis vývodů a křížení různých propojovacích kabelů
konektory.php
JavaScript - ukázky
Příklady užití některých často používaných efektů na stránky.
katalogy/javascript
Programování PHP
Články o programování webových stránek pomocí PHP.
internet/katalog_programovani_php
Popis HTML formátu
Velikost textu, barva textu, rozvržení stránky, obrázky, barva pozadí se zapisuje pomocí HTML příkazů.
stranky/html_tag
Weby o programování
Odkazy na velké servery o programování a vývoji SW
odkazy/programovani
Databáze obrázků
Malé a velké obrázky, podlkady, tlačítka, okrasné čáry a pod.
datove_zdroje/obrazky
PHP práce s poli
Práce s poli a položkamy v PHP.
stranky/php_array
Řetězce PHP
Informace o chování řetězců v programování PHP.
php/obsah_php_string.php
Otevře stránky Fulltextové vyhledávání na celém serveru
Digitalizované odborné knihy
Velká encyklopedie pojmů a zkratek
Česko - anglicko - německý technický slovník
Klasický katalog firem, služeb a stránek
OnLine překladač  vět a textů (nepoužívá Google)
Stránky pro chvíle oddechu od studia, relaxace
Katalog českých firem dle technologií
Internetový odkazník
Otevře hlavní stranu pro oddíl programování




 Wikipedie   Seznam stránek   Kapitoly témat   Významné servery   Klíčová slova 








Otevře hlavní stranu společnosti AmaPro

Všechna práva vyhrazena. Určeno jen pro osobní využití. Bez předchozího písemného souhlasu správce www.amapro.cz je zakázána jakákoli další publikace, přetištění nebo distribuce jakéhokoli materiálu nebo části materiálu zveřejněného na www.amapro.cz a to včetně šíření prostřednictvím elektronické pošty. Články, jejichž přímým autorem není amapro.cz lze publikovat pouze se souhlasem jejich majitelů či administrátoru příslušného webu.