Як згадувалось у багатьох моїх попередніх питаннях, я працюю через 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__);і неявно побудувати весь рядок відразу.