3.1 Co to jest preprocesor?

Preprocesor to program przetwarzający tekst programu w C/C++ przed jego właściwą kompilacją. W szczególności, preprocesor nie sprawdza poprawności składniowej i nie wie nic o języku C ani tym bardziej o języku maszynowym.

Dyrektywy preprocesora nie są przeznaczone dla kompilatora, zatem nie kończą się znakiem średnika.

Dzięki preprocesorowi możemy natomiast stosunkowo łatwo zmieniać tekst programu „widziany” przez kompilator. Należy przy tym pamiętać, że podczas kompilacji dyrektywy preprocesora nie są już widoczne — widoczny jest tylko tekst przetworzony przez preprocesor, a linie rozpoczynające się od znaku ” są usunięte (gdyż spowodowałyby błąd kompilacji). Stwarza to niebezpieczeństwo, że komunikaty kompilatora staną się niezrozumiałe dla programisty, gdyż trudno czasem ustalić, jaki właściwie tekst programu został wysłany do kompilacji po jego przetworzeniu przez preprocesor. Generalnie zatem należy stosować tylko najpotrzebniejsze dyrektywy preprocesora i nie wykorzystywać ich wszystkich możliwości. Wydatnie zwiększa to czytelność kodu. Dlatego nie o wszystkich możliwościach preprocesora będziemy mówić; zainteresowani mogą znaleźć pozostałe informacje w literaturze.

Instrukcje przeznaczone dla preprocesora nazywamy dyrektywami. Wszystkie rozpoczynają się od znaku ” jako pierwszego niebiałego znaku linii. Zazwyczaj jedna dyrektywa zajmuje jedną linię; jeśli jednak nie mieści się w jednej linii, to linię, która ma być kontynuowana, kończymy znakiem '\' (odwrócony ukośnik); musi to być ostatni znak linii, za nim nie może być nawet (niewidocznej) spacji. Na przykład

       #define wymiar 256
jest równoważne
       #define wymiar \
               256

Wymieńmy zatem najważniejsze dyrektywy preprocesora.

T.R. Werner, 25 lutego 2017; 22:31