czwartek, 10 lutego 2011

Kurs C: Preprocesor


Autor: Dondu

Kurs języka C: Spis treści

Preprocesor, to proces wchodzący w skład całego procesu kompilacji programu. Proces ten ma przygotować właściwy kod C, który będzie podlegał kompilacji.

Ale o co chodzi?!


Przykład 1

Wyobraź sobie sytuację, w której masz program, z którego chciałbyś zrobić wersję demonstracyjną mającą pewne ograniczenia. Możesz skopiować pełną wersję i usunąć na stałe te fragmenty, których nie chciałbyś, by były w wersji demonstracyjnej programu.

W ten sposób masz dwie różne wersje źródłowe. Skompilujesz obie i hulaj dusza!

A co gdy będziesz musiał poprawić fragment programu, który jest zarówno w wersji pełnej jak i demonstracyjnej? Będziesz musiał dokonać poprawek w obu źródłach. Koszmar!!!


Ratunek tkwi w Preprocesorze

I tutaj z pomocą przychodzi nam preprocesor, oferując zestaw dyrektyw oraz poprzedzając proces właściwej kompilacji dodatkowym procesem przygotowującym właściwy kod C.


Używając dyrektyw preprocesora, możesz więc tak napisać program, że z jednego kodu źródłowego będziesz mógł wygenerować zarówno kod pełnej wersji programu jak i demonstracyjnej, a ewentualne poprawki kodu będziesz już wykonywać tylko w jednym kodzie. Genialne!


Przykład 2

W mikrokontrolerach często piszemy programy na różne mikrokontrolery tej samej rodziny. Często też w nowych projektach wykorzystujemy napisane wcześniej fragmenty programów.

Mając możliwość korzystania z preprocesora, możemy tak napisać program, że łatwo zmienimy podłączenie np. wyświetlacza LCD do innych pinów tego samego lub innego mikrokontrolera. To zaoszczędza czas potrzebny na dokonywanie zmian w wielu liniach programu.


Powyższe przykłady, to oczywiście tylko część z wielu możliwości jakie daje nam Preprocesor. Wszystkie omówimy w osobnych artykułach. Poniżej jedynie wykaz czym się zajmiemy. 


Dyrektywy preporcesora

Lista dyrektyw.

#include
#define
#undef

#if #elif #else #endif
#ifdef #ifndef #else #endif

#error
#warning

#line


Makra

Makra są poniekąd odpowiednikami funkcji inline. ale dostępnymi z poziomu preprocesora. Do czego służą i jak je wykorzystywać, opiszę w osobnym artykule.


Makra predefiniowane

To makra zawierające konkretne informacje, które można wykorzystać w dowolny sposób:

__DATE__ - data kompilacji
__TIME__ - godzina kompilacji
__FILE__ - nazwa kompilowanego pliku
__LINE__ - numer linijki kodu



Kurs języka C: Spis treści

Brak komentarzy:

Prześlij komentarz