Preprocesor

2016-06-20 08:41
Jacek Labudda
												

Czym jest preprocesor?

Za pomocą dyrektyw preprocesora możemy sterować procesem kompilacji programu, załączać biblioteki, czy też tworzyć stałe oraz metody/makrodefinicje. Każdą z nich należy poprzedzić znakiem #(hash). Z preprocesorem spotkaliśmy się tak naprawdę już w naszym pierwszym programie. Załączenie jakiejkolwiek biblioteki wymaga zastosowania dyrektywy include.

Dyrektywy

include - załączanie plików do projektu Są dwa sposoby linkowania plików:
#include <file> #include "file"
* Gdy użyjemy nawiasów ostrokątnych to podczas kompilacji pliki będą wyszukiwane w miejscu zależnym od implementacji. Miejsce to możemy zmienić w ustawieniach projektu. W przypadku Code::Blocks możemy to ustawić w tym miejscu: Project -> Build options... -> Search directories -> Compiler -> Add Następnie wybieramy lokalizację w której ma być przeprowadzane poszukiwanie załączonych plików. * Cudzysłowów używamy w momencie, gdy załączany plik znajduje się w tym samym miejscu co plik źródłowy. define - definiowanie stałych lub metod/makrodefinicji
#include <iostream> #define PI 3.14 //stala #define radian(a)(a*PI/180.f) //makrodefinicja #define degrees(a)(a/PI*180.f) //makrodefinicja using namespace std; int main(){ int stopnie = 90; cout << "Kat " << stopnie << " stopni w radianach = " << radian(stopnie) << "." << endl; cout << "Radian " << radian(stopnie) << " = " << degrees(radian(stopnie)) << " stopni." << endl; return 0; }
Kat 90 stopni w radianach = 1.57. Radian 1.57 = 90 stopni. undef - Usuwa identyfikator zdefiniowany przez dyrektywę define. if - działa na tej samej zasadzie co if, w momencie, gdy warunek tej instrukcji będzie różny od zera to warunek zostanie spełniony i dana część kodu zawarta w tym bloku będzie brana pod uwagę podczas kompilacji. ifdef - zbliżone działanie do if, działa tylko z identyfikatorem zdefiniowanym przez #define, sprawdza czy takowy identyfikator został zdefiniowany. ifndef - odwrotne działanie niż ifdef, dyrektywa sprawdza, czy dany identyfikator nie został zdefiniowany. else - odzwierciedlenie else. elif - odzwierciedlenie else if(warunek). endif - zakańcza blok będący w warunku. Należy pamiętać o tym, aby liczba dyrektyw if/ifdef była równa liczbie endif. error - Tworzenie własnych logów kompilacji.

Zastosowanie

Dzięki preprocesorom, możemy sprawdzić, np. z jakiego systemu operacyjnego korzystamy:
#ifdef _WIN32 //kod dla systemu operacyjnego windows #elif __linux__ //kod dla systemu operacyjnego linux #else //kod dla innego systemu operacyjnego #endif
Dzięki temu nasz program będzie multiplatformowy.

Użytkownicy
Logowanie:
Zaloguj
Polub nas na facebooku
Wyszukiwanie na stronie