HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Előfordítási direktívák használata


Példaprogram letöltése

6578 bájt

Ha alkalmazásunk fejlesztése folyamán a forráskódban lennének olyan részek, melyekre bizonyos esetben van szükség, más esetekben pedig nincs, akkor ezeket fordítási direktívákkal hol belefordíthatjuk a kész programba, hol pedig kihagyhatjuk. Jó példa erre olyan forráskód részlet, mely mondjuk csak egy adott kód hibakereséséhez kell. De jó példa lehet az is, ha egy alkalmazásból egy demót készítünk és ezt úgy tennénk, hogy bizonyos funkciókat kihagyunk a teljes verzióból. Ekkor nyilván nem törölhetjük ki ezeket a funkciókat hiszen továbbra is szükségünk van rájuk, de a demó verzióba nem kerülhetnek bele.

Direktívákat definiálni a #define kulcsszó után tudunk.
#define TEST
#define AB
#define B
Ha már nincs szükségünk egy definiált direktívára, akkor azt az #undef –el szüntethetjük meg.
#undef AB
Ha létrehoztunk egy direktívát, akkor annak meglétét az #if direktívával ellenőrizhetjük.
Ha a TEST létezik, akkor a következő sor kerül a készítendő programba lefordításra.
    private void button1_Click(object sender, System.EventArgs e)
    {
#if (TEST)
      label1.Text = "TEST";
Ha a TEST nem létezik, akkor az #else direktíva utáni rész kerül a programba. Az #else használata nem kötelező.
#else
      label1.Text = "not TEST";
Az #if direktívát az #endif-el kell lezárnunk. Az így közrezárt blokkra vonatkozik az, hogy bekerül-e a programba vagy sem. Ha használunk #else-t, akkor az #endif ezt zárja, míg ez esetben az #if hatása az #else-ig tart. Ez pont úgy működik, mint a hagyományos if, else.
#endif
    }
Lehetőség van arra is, hogy az #if direktívával egy összetett kifejezést értékeltessünk ki.
Ebben az esetben a TEST és az A direktíva meglétét ellenőrizzük.
    private void button2_Click(object sender, System.EventArgs e)
    {
#if (TEST && A)
      label2.Text = "TEST && A";
Az #elif használatával egy újabb ellenőrzést végezhetünk, melyre csak akkor kerül sor, ha az első #if nem teljesül.
#elif (TEST && !A)
      label2.Text = "TEST && !A";
#endif
    }
A direktívák között használhatjuk a ==, !=, &&, || logikai operátorokat és természetesen a definiáltság logikai értékének a megfordítására a ! jelet.
További direktívák is rendelkezésünkre állnak.
Például a #region és #endregion közé zárt forráskódhoz a forráskód szerkesztőben megjelenik egy kis mínusz jel, így ezt a részt mint egy külön hierarchia szintet becsukhatunk, kinyithatunk. A #region után megadhatunk egy nevet. Ez a név fogja reprezentálni a blokkot becsukott állapotban.
    #region Buttons
    private void button1_Click(object sender, System.EventArgs e)
    {
       ...
    }
    #endregion
Arra is lehetőségünk van, hogy a program fordításakor hibaüzenetet, vagy figyelmeztető üzenetet generáljunk.
Ha a B direktíva nincs deklarálva, akkor az #error direktíva használatával egy hibaüzenetet generáltatunk, így az alkalmazásunkat a Visual Studio.NET nem is fordítja le, hanem ennél a sornál hibát jelezve megszakad. Az #error direktíva után egy tetszőleges szöveget megadhatunk, mely megjelenik hibaüzenetként.
  public Form1()
  {
#if !B
#error B nem definiált 
#endif
Figyelmeztető üzenet generálásához a #warning direktívát kell használnunk, amely után szintén megadható egy tetszőleges szöveg, amely megjelenik a projekt fordításakor figyelmeztetésként. Lehetőségünk van a #warning és az #error esetében arra is, hogy megadjuk azt, hogy Task List-ben megjelenő üzenet mellett a fordító melyik állományt és annak hányadik sorát jelölje meg.
#line 1234 "ez a file name"
#warning figyelmeztetés
}

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2001 évkönyv 278. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |