Preprocesor
Makrodefinicje
Dyrektywa makrodefinicji ma jedną z dwóch postaci
#define nazwa rozwinięcie
#define nazwa(argumenty_formalne) rozwinięcie
- Nazwa makrodefinicji może być dowolnym dopuszczalnym w C++ identyfikatorem
- Zwyczajowo nazwa makrodefinicji budowana jest z samych dużych liter
- Skutkiem użycia dyrektywy makrodefinicji jest zastąpienie każdego wystąpienia podanej
nazwy stosownym rozwinięciem.
- Rozwinięcie może mieć dowolną postać.
- Jeśli użyto argumentów, to każde wystąpienie nazwy wraz
z zamkniętą w nawiasy listą argumentów aktualnych zostaje zastąpione
treścią rozwinięcia, w którym dodatkowo każde wystąpienie argumentu
formalnego zostaje zastąpione odpowiednim argumentem aktualnym.
- Między nazwą a nawiasem ( nie może być spacji!
- W języku C++ w większości przypadków w miejsce makrodefinicji można
i warto używać tak zwanych szablonów
- Szablony to coś w rodzaju makrodefinicji, które jednak rozwijane są przez sam kompilator,
a nie przez preprocesor
- Unika się w ten sposób wielu błędów pojawiających się na skutek braku dobrej współpracy
pomiędzy preprocesorem, a kompilatorem.
Materiały przeznaczone wyłącznie dla studentów
Instytutu Informatyki i Matematyki Komputerowej UJ
Daniel Wilczak