Как упоминалось во многих моих предыдущих вопросах, я работаю через K&R, а сейчас занимаюсь препроцессором. Одна из наиболее интересных вещей - чего я никогда раньше не знал из своих предыдущих попыток изучить C - это ##оператор препроцессора. Согласно K&R:
Оператор препроцессора
##предоставляет способ объединения фактических аргументов во время раскрытия макроса. Если параметр в замещающем тексте находится рядом с a##, параметр заменяется фактическим аргументом,##удаляются и окружающие пробелы, а результат повторно просматривается. Например, макросpasteобъединяет два своих аргумента:
#define paste(front, back) front ## backтак
paste(name, 1)создает токенname1.
Как и зачем кому-то это использовать в реальном мире? Каковы практические примеры его использования и есть ли подводные камни, которые следует учитывать?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);и неявно построить сразу всю строку.