90 ROZDZIAŁ 12. PREPROCESOR • wiersz nr 3 zostanie skompilowany w pozostałych wypadkach • wiersz nr 4 będzie kompilowany zawsze #ifdef #ifndef #else #endif Te instrukcje warunkują kompilację od tego, czy odpowiednia stała została zdefi- niowana. #ifdef spowoduje, że kompilator skompiluje poniższy kod tylko gdy została zdefinio- wana odpowiednia stała. #ifndef ma odwrotne działanie do #ifdef , a mianowicie brak definicji odpowiedniej stałej umożliwia kompilacje poniższego kodu. #else,#endif mają identyczne zastosowanie jak te z powyższej grupy Przykład: #define INFO /*definicja stałej INFO*/ #ifdef INFO printf ("Twórcą tego programu jest Jan Kowalski\n");/*1*/ #endif #ifndef INFO printf ("Twórcą tego programu jest znany programista\n");/*2*/ #endif To czy dowiemy się kto jest twórcą tego programu zależy czy instrukcja definiująca stałą INFO będzie istnieć. W powyższym przypadku na ekranie powinno się wyświetlić Twórcą tego programu jest Jan Kowalski #error Powoduje przerwanie kompilacji i wyświetlenie tekstu, który znajduje się za tą in- strukcją. Przydatne gdy chcemy zabezpieczyć się przed zdefiniowaniem nieodpowied- nich stałych. Przykład: #if BLAD == 1 #error "Poważny błąd kompilacji" #endif Co jeżeli zdefiniujemy stałą BLAD z wartością 1? Spowoduje to wyświetlenie w trakcie kompilacji komunikatu podobnego do poniższego: Fatal error program.c 6: Error directive: "Poważny błąd kompilacji" in function main() *** 1 errors in Compile *** wraz z przerwaniem kompilacji.
... zobacz całą notatkę
Komentarze użytkowników (0)