Preprocesor

Instrukcje w wierszach rozpoczynających się od znaku # to dyrektywy preprocesora. Dostarczają one kompilatorowi dodatkowych informacji o tym, jak należy kompilować dany plik. Dyrektywy mogą wystąpić gdziekolwiek w programie, a ich składnia jest niezależna od reszty języka.

Dyrektywy preprocesora to:

#define
- pozwala zdefiniować pewien symbol, np. #define symbol Definiowany symbol automatycznie ma przypisywaną wartość true. Symbole możemy przekazywać do kompilatora także poprzez parametry z jakimi jest on wywoływany (podanie w lini poleceń /define:symb jest równoważne instrukcji #define symb )
#undef
- pozwala anulować deklaracje symbolu, np. #undef symbol
#if
- pozwala na wykonanie przez preprocesor instrukcji warunkowej. Dyrektywa #if musi być używana w połączeniu z dyrektywami #else, #elif, #endif (wymagane zakończenie).
#warning
- powoduje wypisanie ostrzeżenia przez kompilator,
np. #warning "ostrzegam - używasz przestarzałej biblioteki"
#error
- powoduje wypisanie błędu przez kompilator,
np. #error "kompilujesz zły plik !!!"
#line
- modyfikuje numerowanie linii przez kompilator.
#region
- pozwala wyspecyfikować blok kodu (jako parametr podajemy nazwę). Blok ten kończy się w momencie zastosowania dyrektywy #endregion. Umożliwia to kompilatorowi ładniejsze zawijanie kodu. Np.
#region  Funkcje pomocnicze
.... // Tutaj znajduje się kod danych funkcji
#endregion
#pragma
- dodaje opcjonalne informacje dla kompilatora. Nigdy nie zmienia semantyki programu ani nie powoduje błędu kompilacji. Konkretne dyrektywy pragma to:
#pragma warning disable - wyłącza ostrzeżenia kompilatora
#pragma warning restore - włącza z powrotem ostrzeżenia kompilatora


Przykład:


#define  DEBUG
#define   DLL
...
#if ( DEBUG &&  DLL )
   System.Console.WriteLine("DEBUG  oraz DLL są zdefiniowane");
#elif ( !DLL )
   System.Console.WriteLine("Nie zdefiniowane DLL");
#endif


prev | Strona Główna | next

Copyright © 2006 Daniel Dusiński
Wszelkie prawa zastrzeżone