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