Sklejanie identyfikatorów
- Przy rozwijaniu makrodefinicji każde wystąpienie ## zamieniane jest na tekst pusty
- Pozwala to utworzyć nowy identyfikator przez dopisanie jakichś znaków alfanumerycznych przed i/lub po argumencie będącym identyfikatorem.
- Technika taka przydaje się do tworzenia skrótów przy wypisywaniu serii spokrewnionych deklaracji
- W przykładzie
#define TEKST(a) char* a##_wskaznik; int a##_dlugosc;
TEKST(alfa);
TEKST(beta);
TEKST(gamma);
makrodefinicja TEKST(alfa) deklaruje spokrewnioną
parę zmiennych:
char* alfa_wskaznik;
int alfa_dlugosc;
Uwaga: preprocesor nie sprawdza sensowności argumentów, więc na przykład
TEKST("alfa") wygeneruje linię
char* "alfa"_wskaznik; int "alfa"_dlugosc;
na której wywróci się dopiero sam kompilator.
Przykład - sklejanie identyfikatorów