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