Jak wspomniano w wielu moich poprzednich pytaniach, pracuję przez K&R i obecnie używam preprocesora. Jedną z bardziej interesujących rzeczy - czymś, czego nigdy wcześniej nie wiedziałem z żadnej z moich poprzednich prób nauki C - jest ##operator preprocesora. Według K&R:
Operator preprocesora
##umożliwia konkatenację rzeczywistych argumentów podczas rozwijania makr. Jeśli parametr w zastępczym tekście sąsiaduje z a##, parametr jest zastępowany przez rzeczywisty argument,##biały znak i otaczający go odstęp są usuwane, a wynik jest ponownie skanowany. Na przykład makropastełączy dwa argumenty:
#define paste(front, back) front ## backwięc
paste(name, 1)tworzy tokenname1.
Jak i dlaczego ktoś miałby to wykorzystać w prawdziwym świecie? Jakie są praktyczne przykłady jego użycia i czy należy wziąć pod uwagę pewne kwestie?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);i niejawnie skompilować cały ciąg naraz.